2012-10-02 238 views
0

嘿所有我有以下的AJAX POST電話:AJAX POST調用不是在IE工作,但在所有其他瀏覽器

function callAjax(what2Do) 
    { 
     jQuery.ajax({ 
      url: "count.php?do=" + what2Do, 
      type: "POST", 
      data: "", 
      cache: false, 
      success: function(response, textStatus, jqXHR){ 
       alert('done!'); 
      }, 
      error: function(jqXHR, textStatus, errorThrown){ 
       alert(
        "The following error occured: "+ 
        textStatus, errorThrown 
       ); 
      } 
     }); 
    } 

,我不斷收到錯誤出現下列錯誤:錯誤運行時,頁面在iE9中,但它在所有其他瀏覽器中工作得很好。

我會錯過什麼,它不能在IE中工作?回報是簡單的文字。

+0

要獲得更好的信息,請修復警報,以便獲得更多信息。 'textStatus +「|」 + errorThrown' –

+1

查看IE9開發工具(F12)中的網絡選項卡。這應該給你全面的迴應。如果您在此之後繼續工作,請在此處發佈回覆以獲得進一步幫助。 –

+0

我的錢在他身上意味着IE8。 –

回答

0

試試這個:

function callAjax(what2Do) 
{ 
    jQuery.ajax({ 
     url: "./count.php", 
     type: "GET", 
     data: { 'do': what2Do }, 
     cache: false, 
     success: function(response, textStatus, jqXHR){ 
      alert('done!'); 
     }, 
     error: function(jqXHR, textStatus, errorThrown){ 
      alert(
       "The following error occured: "+ 
       textStatus, errorThrown 
      ); 
     } 
    }); 
} 
+0

第二個建議。還請記住修改服務器端代碼以使用POST數據而不是GET數據 – akhaku

+0

是的,那是我的擔心是OP在URL中發送帶GET數據的POST。不應該是一個問題,但IE8尤其是這樣的東西非常挑剔。 –

+0

它的作品,但仍然沒有在IE9 ... – StealthRT

1

我很遺憾不得不做速成班在傳統IE的行爲來處理幾乎相同的條件。在我的情況下,它歸結爲IE的頑固的insistence使用他們自己的專有的XDomainRequest對象來處理CORS。有一些很好的鏈接:

令人反感,因爲它是要爲那些拒絕遵循標準的瀏覽器異常,我像在我的項目如下考慮到需要的情況:

// This is necessary due to IE<10 having no support for CORS. 
function fallbackXDR(callObj) { 
    if (window.XDomainRequest) { 
     var xdrObj = new XDomainRequest(); 
     xdrObj.timeout = callObj.timeout; 
     xdrObj.onload = function() { 
      handleSuccess(xdrObj.responseText); 
     }; 
     xdrObj.onerror = function() { 
      handleError(xdrObj); 
     }; 
     xdrObj.ontimeout = function() { 
      callObj.xdrAttempts = callObj.xdrAttempts++ || 1; 
      if (callObj.xdrAttempts < callObj.maxAttempts) { 
       fallbackXDR(callObj); 
      } 
     }; 
     xdrObj.onprogress = function() { 
      // Unfortunately this has to be included or it will not work in some cases. 
     }; 

     // Use something other than $.param() to format the url if not using jQuery. 
     var callStr = callObj ? '?'+$.param(callObj.urlVars) : ''; 
     xdrObj.open("get", callObj.url+callStr); 
     xdrObj.send(); 
    } else { 
     handleError("No XDomainRequest available.", callObj); 
    } 
}//fallbackXDR() 
相關問題