1

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

这是代码:

    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”功能将被阻止。不知道有没有人遇到过同样的问题?

4

2 回答 2

2

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

更新 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
}
于 2009-08-08T10:24:39.860 回答
0

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

于 2009-08-08T10:04:35.127 回答