2010-05-05 30 views
4

我正在從事使用$ .ajax和dataType設置爲jsonp的不同域調用webservice的項目。jsonp在發送之前不會觸發嗎?

$.ajax({ 
     type: "GET", 
     url: testService.asmx, 
     async: true, 
     contentType: "application/json; charset=utf-8", 
     dataType: "jsonp", 

     beforeSend: function (XMLHttpRequest) { 
      alert('Before Send'); //Nothing happnes 
     }, 
     success: function (response) { 
      alert('Success'); //this was fired 
     }, 
     complete: function (XMLHttpRequest, textStatus) { 
      alert('After Send'); //this was fired 
     } 
    }); 

問題是我有一個...加載動畫,我想要顯示,而Web服務請求正在處理。我嘗試使用「beforeSend:」顯示加載動畫,但它似乎像「beforeSend」沒有被解僱。

當應用程序在同一個域上(使用jsonp)時,動畫工作正常,但當我將應用程序移動到另一個服務器時,除「beforeSend」之外的所有內容都沒有被調用。因此用戶將無法看到加載動畫。

對此有什麼解決辦法?

回答

4

跨域JSONP請求不使用XMLHTTPRequest,所以事件流是不同的。

您可以在調用$ .ajax之後立即顯示加載動畫。

0

beforeSend針對jQuery的實現JSONP正在進行中。 對於現在的解決方案,使用方法:

jQuery(document).ajaxStart(function(){alert('Before Send');}); // For all XHRs 
$('#id').ajaxStart(function(){alert('Before Send');});   // For unique XHR 

之前$.ajax({...});

相關問題