jquery - javascript变量没有保持值

时间:2009-12-15 19:36:10

标签: javascript jquery ajax

我正在使用此代码将表单提交到php脚本:

var valid = 'true';
$(document).ready(function(){
  $("#contact").submit(function(){
    $.post("process.php",
      $("#contact").serialize(),
      function(data){
        if(data.email_check == 'invalid'){
          valid = 'false'; //<---not set!
          $("#email1").addClass('missing'); 
          $("#message_ajax")
            .html("<div class='errorMessage'>Sorry is NOT a valid e-mail address. Try again.</div>");
        } else {
          $("#message_ajax")
            .html("<div class='errorMessage'>YES! this is A valid e-mail address. DO NOT Try again.</div>");
        }
      }, "json"
    );

    if(valid == 'true'){
      $("#contact").hide();
    }

    return false;
  });
});

我知道脚本返回'invalid'值,因为div和css按预期更新,但'valid'变量永远不会设置为'false'。认为这是一个范围问题,我已经移动了声明,如果声明没有任何快乐。

可能的相关问题 - 我正在使用firebug来逐步执行代码,但它只在代码执行时第一次在断点处停止,而且从不再次,但我可以提交任意次数的表单,它总是按预期响应 - 有效或无效。如你所见,我对jQuery很新。

1 个答案:

答案 0 :(得分:6)

你在这里混合同步和异步代码。

if(valid == 'true'){
    $("#contact").hide();
}       

return false;

此代码^^^在调用回调function(data)之前运行。

基本上发生了什么:

  • $。发布
  • if(valid =='true')被评估
  • .submit()函数返回false
  • 回调函数(数据)称为
  • '有效'变量已设置