为什么jQuery ajax成功回调调用取消了AJAX调用?

时间:2010-02-25 04:02:38

标签: jquery ajax

我有一个简单的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中找不到有关此更改的任何文档。

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

1 个答案:

答案 0 :(得分:1)

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

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