在跨域$ .ajax调用中触发ajaxError?

时间:2011-03-22 09:22:12

标签: javascript jquery ajax cross-domain

当我使用$ .ajax调用(在跨域调用上)时,我无法获取jQuery的ajaxError全局处理程序。有没有办法让它开火?

我收录了一个快速&下面的脏测试(改编自So how does $.ajaxError work?)。实际上,即使我明确地将global设置为true,也没有全局ajax事件触发。如果我​​将$ .ajax转换为$('result')。加载它工作正常,但这不是我想要的。

<!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>

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

请阅读jQuery ajax

  

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

最好使用 curl 进行跨域调用