Jquery ajax onSuccess事件

时间:2009-08-08 09:41:20

标签: javascript jquery html jsonp

我正在使用JQuery进行AJAX,但每次“onSuccess”事件必须在另一个AJAX请求断开后执行。

以下是代码:

    d.ajax({
        url: f.options.url.offline,
        dataType: "jsonp",
        jsonp: "callback",
        cache: false,
        data: {
            status: "offline",
            ticket: f.connection.options.ticket
        },
        success: function(g) {
            f._offlineSuccess()
        },
        error: function() {
            f._offlineError()
        }
    })

我的所有AJAX请求都是JSONP,当触发上面的代码时,还有另一个AJAX连接(长轮询请求,最后约10秒)已经同时建立。因此,“f._offlineSuccess”函数总是在另一个AJAX连接断开后执行。

我看不到两个AJAX请求之间的任何关系,我不知道为什么必须在另一个AJAX连接停止后执行“onSuccess”函数。

感谢任何帮助〜

================================

更新

我刚刚发现如果我同时有两个JSONP连接,“onSuccess / onFailure”功能将被阻止。我不知道是否有人遇到过同样的问题?

2 个答案:

答案 0 :(得分:2)

Ajax请求是异步的。因此,新的请求不会完成前一个请求。如果您希望该行为使用async参数为false,或使用complete()函数调用另一个请求。只有在第一个请求完成时才会触发。

UPDATE 对于JsonP使用jQuery.getJSON(),如果调用成功,则在回调时执行第二个请求。

function (data, textStatus) {
    // data will be a jsonObj
    // textStatus will be one of the following values: 
    //   "timeout","error","notmodified","success","parsererror"
    this; // the options for this ajax request
}

答案 1 :(得分:0)

如果使用firebug - net选项卡,您将能够看到两个jsonp请求的完整URL。您应该能够在URL的末尾看到回调函数名称。这些是不同的还是相同的?我只能假设他们是一样的。