jquery - javascript变量没有保持值

jri*_*ggs 1 javascript ajax jquery

我正在使用此代码将表单提交到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;
  });
});
Run Code Online (Sandbox Code Playgroud)

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

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

T. *_*one 6

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

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

return false;
Run Code Online (Sandbox Code Playgroud)

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

基本上发生的事情是这样的:

  • $ .post运行
  • if(valid =='true')被评估
  • .submit()函数返回false
  • 调用回调函数(数据)
  • '有效'变量已设置