【问题标题】:Why is jQuery ajax success callback called on cancelled AJAX call?为什么在取消 AJAX 调用时调用 jQuery ajax 成功回调?
【发布时间】:2010-02-25 04:02:38
【问题描述】:

我有一个简单的 AJAX jQuery 命令来更新购物车(由下拉列表框更改触发):

 $.ajax({

    type: "POST",
    url: $.url("updateCart"),
    data: data,
    dataType: "json",

    success: function (data, status, req) {

       alert(data + " - " + status + " - " + req);

    });

似乎在 jQuery 1.4.x 中,success 回调的调用行为发生了变化。

如果您提交 AJAX 查询,然后单击“常规”HTML 表单提交按钮,它将立即向成功回调发送“null”。因此,对于上面的示例,如果我触发 AJAX 事件然后单击非 AJAX 提交按钮 - 它会显示一个警报:

null - success - [object XMLHttpRequest]

Fiddler 正在为我验证 AJAX 响应尚未从服务器返回 - 但调用了 success 方法。

这破坏了我的一些代码,因为它期望数据存在。

如果需要,我可以检查 null - 我只是找不到任何关于 jQuery 中此更改的文档。

所以我想知道这是一个错误还是设计使然?

【问题讨论】:

  • 查看通常触发 ajax 函数的事件处理程序会很有帮助。
  • @anthony 真的没关系。它只是一个下拉更改事件。如果没有人立即对此有答案,我将创建一个适当的示例项目,但如果它是一个明显的已知错误或设计,我宁愿不花更多时间在它上面。谢谢

标签: jquery ajax


【解决方案1】:

我认为这是一个错误,我在 jQuery 错误跟踪器中为它填写了一张票。 (http://dev.jquery.com/ticket/6172)

jQuery 1.4.0 及更早版本中不存在此错误。

【讨论】:

  • 谢谢!除了stackoverflow之外的留言板和类似的东西吓到我了:-)你可能想要添加在调用提交时调用成功 - 以防万一它不是完全相同的触发器
  • 不同浏览器的行为也不同
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-10
  • 2011-11-28
  • 1970-01-01
  • 1970-01-01
  • 2011-04-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多