【问题标题】:jQuery ajax error callback not firingjQuery ajax 错误回调未触发
【发布时间】:2011-09-30 16:48:56
【问题描述】:

我正在请求一个带有 ajax 的 URL,导致 HTTP 标头代码为 500。我希望这会触发错误函数:

    $.ajax({
  url: "http://xxx",
  dataType: "jsonp",
  crossDomain: true,
  success: function( data ) {
        alert('success');
  },
  error: function () {
        alert('error');
  }
});

这在 safari 中有效,但在 chrome 和 firefox 中失败。

我做错了什么?

这是最新的 jquery 1.4.X,因为我无法升级到更高版本..

响应发送一个 HTTP 代码 500,内容类型 application/json 和内容:

jsonp1310063232212({"error":{"reason":"找不到用户"}})

【问题讨论】:

  • 我不确定这个版本的 jQuery 是否可以检测 JSONP 错误。尝试为您的请求设置超时。如果超时后没有收到结果,可能会调用回调。
  • 谢谢,但没有改变。没有错误回调,没有成功回调。还添加了 ajaxError 方法,但也没有被调用。

标签: jquery ajax error-handling callback


【解决方案1】:

看起来 crossDomain: 直到 jQuery 1.5 才添加。

http://api.jquery.com/jQuery.ajax/

crossDomain(添加 1.5)

默认值:假 对于同域请求,对于 跨域请求。

如果你愿意 强制跨域请求(例如 JSONP) 在同一个域上,设置 crossDomain 的值为 true。这 允许,例如,服务器端 重定向到另一个域

就像 Martin Larente 在他的评论中建议的那样,这可能是不同浏览器或 jQuery 如何检测/报告 JSONP 错误的问题。

【讨论】:

    【解决方案2】:

    此查看似乎存在未解决的问题。 Abort JSONP ajax request with jQuery

    【讨论】:

      【解决方案3】:

      如 JQuery 文档 [1] 中所述,跨域脚本和 JSONP 请求不会调用错误处理程序。它在旧版本的 JQuery 上(并非总是)有效。

      我使用一个紧凑而有效的插件解决了这个问题,其中包括一个很好的错误处理程序: http://code.google.com/p/jquery-jsonp/

      下载并添加到head:

      <script src="javascripts/jquery.jsonp-2.2.0.min.js" type="text/javascript"></script>
      

      然后你可以使用类似于$.ajax()的函数$.jsonp():

      $.jsonp({
          url: "http://xxx?callback=?",
          data: {
              var: 'test'
          },
          cache: false,
          success: function(data, textStatus) {
              // ...
          },
          error: function(xOptions, textStatus) {
              console.log('Error');
              // ...
          }
      });
      

      [1]http://api.jquery.com/jQuery.ajax/

      【讨论】:

      • 我被旧版本的 jquery (1.8.2) 卡住了,切换到 jsonp 函数对我有用。
      猜你喜欢
      • 1970-01-01
      • 2012-05-04
      • 1970-01-01
      • 2018-12-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-12
      • 2016-03-25
      相关资源
      最近更新 更多