【问题标题】:JQuery wrong ajax done callback firedJQuery 错误的 ajax 完成回调被触发
【发布时间】:2013-05-01 15:20:37
【问题描述】:

我遇到了一个奇怪的 ajax 回调情况。

调用 A 工作正常(我可以在正确的位置看到服务器调用),并且正确触发了 done 回调。

调用 B 调用工作正常(我可以在正确的位置看到服务器调用),但随后触发了 A 的 done 回调!

代码如下: 答:

$(document).ready(function () {
    $('#beta_signup_form').submit(function() {
        var valuesToSubmit = $(this).serialize();
        $.ajax({
            url: $(this).attr('action'), //submits it to the given url of the form
            data: valuesToSubmit,
            dataType: "JSON", // you want a difference between normal and ajax-calls, and json is standard
            type: 'POST'
        }).done(function(json){
            console.log("in the beta signup form success function!!!!");
        })
        .fail(function () {
            console.log("--------> beta signup modal callback error");
        });
        return false; // prevents normal behaviour
    });
});

和代码 B:

$(document).ready(function () {
    $('#twitter_sign_up').submit(function() {
        var valuesToSubmit = $(this).serialize();
        $.ajax({
            url: $(this).attr('action'), //submits it to the given url of the form
            data: valuesToSubmit,
            dataType: "JSON", // you want a difference between normal and ajax-calls, and json is standard
            type: 'POST'
        }).done(function(json) {
             console.log("in success for modal B...");
        }).fail(function () {
            console.log("--------> modal B callback error");
        });
        return false; // prevents normal behaviour
    });
});

这是怎么回事???

【问题讨论】:

  • 我从未见过这种情况。
  • 你能在这里粘贴 HTML 代码吗?
  • 您确定您向我们展示的代码会发生这种情况吗?因为它看起来非常好。更重要的是 - 由于它们位于不同的 $(document).ready 处理程序中,因此它们不可能互相看到。
  • 你应该在submit回调中使用var valuesToSubmit = $(this).serialize(), $this = $(this);,然后在你的$.ajax调用中引用$this而不是$(this)。
  • 这就是你如何用 jQuery 创建一个 ajax fiddle 让我们看看你下次在做什么DEMO

标签: javascript jquery ajax callback


【解决方案1】:

哦,伙计……我刚刚想通了。

所以我有:

<div id="twitter_sign_up">
  <form id="beta_signup_form" ...>
    ...
  </form>
</div>

复制 html 是我的错!

【讨论】:

  • 非常好,哈哈。很高兴你能弄明白。
  • 这排除了我的问题,“调用 B 调用工作正常(我可以在正确的位置看到服务器调用)” 我猜他们是都调用同一个位置?还是您实际上没有检查它发布到的位置
猜你喜欢
  • 1970-01-01
  • 2011-09-30
  • 2013-01-25
  • 1970-01-01
  • 2016-03-25
  • 1970-01-01
  • 2012-05-04
  • 2018-12-23
  • 2015-11-12
相关资源
最近更新 更多