【问题标题】:How jQuery handle cross domain requests errors?jQuery如何处理跨域请求错误?
【发布时间】:2013-08-09 04:25:30
【问题描述】:

考虑到我之前没有定义回调方法和下面的代码:

jQuery.ajax({
            url: 'url',
            type: 'GET',
            data: {},
            dataType: 'jsonp',
            crossDomain: true,
            jsonpCallback: callback,
            async: true,
            success: function ( pData ) {
                //process success
            },
            error: function (jqXHR, textStatus, errorThrown) {
                //Log error
            }
});

jQuery 正在正确处理 ajax 事件(成功/错误),没有错误。 如果在 API 文档中说他们不能这样做,为什么 jQuery 会这样做? 有时我会遇到解析错误,但我总是返回与 JSON 相同的内容。

有人经历过吗?

【问题讨论】:

  • 文档在哪里说它不能这样做? jsonp 是它起作用的原因....
  • 你不能。 jsonp 请求在最新版本的 jQuery 中不会触发错误回调。我不完全确定以前的版本是如何处理它的。这是预期的行为。 “注意:跨域脚本和跨域 JSONP 请求不会调用此处理程序。” 您使用的是什么版本的 jQuery?
  • 我正在使用 jQuery v1.6.1。我知道它是旧版本,但是是环境限制。

标签: jquery ajax cross-domain


【解决方案1】:

这取决于错误的类型。

当您使用 JSONP 时,jQuery 可能会捕获(并将被捕获)一个 parseerror。(在这种情况下,文档并不准确)

但网络错误可能不会被捕获,因为 JSONP 不使用 XMLHttpRequest,因此不会收到任何可能指示错误的状态码。

【讨论】:

    猜你喜欢
    • 2013-04-08
    • 2019-01-09
    • 1970-01-01
    • 2018-01-03
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多