2011-03-22 78 views
2

我在使用$ .ajax調用(在跨域調用時)時遇到了jQuery的ajaxError全局處理程序觸發問題。有什麼辦法讓它着火嗎?

我在下面包含了一個快速的&髒測試(改編自So how does $.ajaxError work?)。實際上,全局ajax事件都不會觸發,即使我明確地將全局設置爲true。如果我將$ .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> 

感謝您的任何幫助。

回答

0

這裏jQuery ajax

閱讀某些類型的Ajax請求的,如 JSONP和跨域GET請求, 不使用XHR;在這些情況下,傳遞給回調的參數 XMLHttpRequest和textStatus 未定義爲 。

最好使用curl跨域調用

+0

哎呀,這是因爲我是個白癡。沒有閱讀全球處理程序文檔中斜體顯示的位:「注意:不管全局值如何,全局事件都不會因跨域腳本或JSONP請求而被解僱。」 – dochead 2011-03-22 12:43:56