回调竞赛:按钮单击以触发ajax,其回调将不会按时执行

时间:2013-03-23 18:36:49

标签: php jquery ajax callback race-condition

我认为这是一个相当经典的问题,涉及到我看起来像回调比赛,但尽管我阅读了所有内容,但我仍然被卡住了。你会发现下面粘贴的代码。

这是一个简单的登录表单,您可以看到,当单击某个按钮时,我会将表单数据“ajaxically”发送到外部php文件。一旦php运行,我将收到结果,并在此处作为测试,只需从php文件中提醒电子邮件地址。

当我运行它时,ajax回调不会执行。如果我快速反复点击按钮,我会得到正确的警报。如果我发出额外的警报,我也会得到正确的回应。

如何在不做其他愚蠢事情的情况下让它运行?

提前致谢 RR

  $('#'+this.loginForm[0].parentId+"logIn")
      .on('click', function() {
        var jax = $.ajax(
          {  
          type: "POST",  
          url: "../sharedfunctions3/act-membership.php",
          data: {email: document.getElementById(that.parentId+'email').value, 
                  password: document.getElementById(that.parentId+'password').value,
                  path: that.path,
                  action: "logIn"
                }
          });

        jax.done(function() 
              { 
              obj = JSON.parse($.trim(jax.responseText)); 
              alert(obj.email);
              });
        jax.fail(function() { alert("error"); });
      alert(1);
      });

1 个答案:

答案 0 :(得分:0)

我有一种预感,当你点击按钮时,浏览器同步和异步提交。

return false;告诉浏览器不提交表单并阻止默认操作。

单击表单标记内的按钮时,即使不是提交输入,大多数浏览器也会提交表单。