一段时间后jQuery jsonp回调没有触发

时间:2011-02-15 15:57:16

标签: javascript jquery jsonp

我使用jQuery的ajax方法向我的服务器发出jsonp请求(我时不时地发出请求)。这通常很好,服务器返回响应并触发我的“成功”回调函数。

问题是,一段时间后,即使我从服务器收到成功的响应,也会停止调用success函数。发生这种情况时,每个连续的jsonp请求也会“失败”(甚至从代码中的其他位置和\或我服务器上的其他路径)。

我检查过的事情:

  1. 服务器的响应有效(与其他成功响应相同)。

  2. jQuery创建的jsonpXXX回调函数确实是全局定义的。

  3. 当我在同一页面上打开多个浏览器时,并非所有浏览器都会发生这种情况。

  4. 我的客户端代码是:

    $.ajax({
        type: "GET",
        url: SOME_URL,
        dataType: "jsonp",
        data: {...},
        success: function(data) {
            alert("This function is not always being called :( ");
        }
    });
    

    任何想法\帮助将不胜感激:)

1 个答案:

答案 0 :(得分:4)

您可能会收到服务器的成功响应,但返回的JSONP文本可能存在一些问题。如果解析响应有任何错误,则调用回调函数将失败。

另外,我建议使用这个简化JSONP请求的alternative solution to jQuery's implementation of JSONP