【问题标题】:Fire ajaxError on a cross domain $.ajax call?在跨域 $.ajax 调用上触发 ajaxError?
【发布时间】:2011-03-22 17:27:02
【问题描述】:

当我使用 $.ajax 调用(在跨域调用中)时,我无法触发 jQuery 的 ajaxError 全局处理程序。有什么办法让它着火吗?

我在下面包含了一个快速而肮脏的测试(改编自 So how does $.ajaxError work?)。实际上,即使我将 global 明确设置为 true,也不会触发任何全局 ajax 事件。如果我将 $.ajax 转换为 $('result').load 它工作正常,但这不是我想要的。

<!DOCTYPE html>
<html lang="en">
  <head>
    <title>jQuery Sandbox</title>
  </head>
  <body>
    <div class="trigger">Trigger</div>
    <div class="result"></div>
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
    <script type="text/javascript">
      $(function () {
        $(document).ajaxError(function (e, xhr, settings, exception) {
          alert(I broke);
        });

        $('.trigger').click(function () {
          $.ajax({
            type: "GET",
            global: true,
            url: 'http://localhost/error',
            success: function(data){
              alert('ftw');
            },
            dataType: "jsonp",
          });
        });
      });
    </script>
  </body>
</html>

感谢您的帮助。

【问题讨论】:

    标签: javascript jquery ajax cross-domain


    【解决方案1】:

    阅读这里jQuery ajax

    某些类型的 Ajax 请求,例如 JSONP 和跨域 GET 请求, 不要使用 XHR;在这些情况下 XMLHttpRequest 和 textStatus 传递给回调的参数是 未定义。

    最好使用curl进行跨域调用

    【讨论】:

    • 啊,因为我很笨。没有阅读全局处理程序文档中斜体表示的位:“注意:无论全局值如何,都不会为跨域脚本或 JSONP 请求触发全局事件。”
    猜你喜欢
    • 1970-01-01
    • 2011-02-03
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 2012-10-12
    • 2012-02-08
    • 2013-03-15
    • 1970-01-01
    相关资源
    最近更新 更多