2013-10-23 52 views
3

我覺得我應該能夠找到這個anwser,但經過幾個小時的研究之後已經沒有成功。我有這個page與簡單的jQuery Ajax調用API服務。它在Chrome,Safari和Firefox,甚至IE 10中都能正常工作。但IE 9和8似乎失敗了。jquery ajax在ie8/9中調用不起作用

下面的代碼:

$.ajax({ 
        type: "GET", 
        url: "http://api.domain.org/api/campus?filtertype=name&filter="+ escape($('#campus').val()), 
        dataType: "json", 
        contentType: "application/json; charset=utf-8", 
        success: function (result) { 
         $('#results').children().remove(); 
         var arrayd = (typeof result) == 'string' ? eval('(' + result + ')') : result; 
         if (arrayd != null) { 
          for (var i = 0; i < arrayd.length; i++) { 
           $('#results').append('<li>' + arrayd[i].SchoolName + '</li>'); 
          } 
         } 
        }, 
        error: function (request, status, errorThrown) { 
         alert("There was an issue with the request"); 
        } // When Service call fails 
       }); 

最大的問題是該警示的文件,但我不能看到IE調試工具不幫我看看,如果我連打了服務器的任何流量。

我已經嘗試了一些事情:

  1. 設置每$就設置http://mvcdiary.com/2013/01/16/jquery-ajax-request-not-working-in-ie9/
  2. 設置 '$ .support.cors = TRUE;' Ajax調用
  3. 使用 'jquery.ieco​​rs.js'

更新

改變數據類型爲 'JSONP' 後開始之前,我看到了交通IE 8/9與成功的電話。但是,我現在沒有任何瀏覽器調用成功方法。

$.ajax({ 
        type: "GET", 
        url: "http://api.athletesinaction.org/api/campus?filtertype=name&filter="+ escape($('#campus').val()), 
        dataType: "jsonp", 
        async: false, 
        contentType: "application/javascript", 
        crossDomain: true, 
        jsonpCallback: 'myTest', 
        success: myTest, 
        error: function (request, status, errorThrown) { 
         alert(errorThrown); 
        } // When Service call fails 
       }); 


     function myTest (argument) { 
      alert("YEAH"); 
      $('#results').children().remove(); 
      var arrayd = (typeof result) == 'string' ? eval('(' + result + ')') : result; 
      if (arrayd != null) { 
       for (var i = 0; i < arrayd.length; i++) { 
        $('#results').append('<li>' + arrayd[i].SchoolName + '</li>'); 
       } 
      } 
     } 
+0

你爲什麼要評價JSON?如果你使用'JSON.parse()'而不是? JSON響應是什麼樣的?你在IE中遇到什麼控制檯錯誤? – user2736012

+0

您應該使用ajax調用的[data]屬性來指定查詢參數。另外,請嘗試jsonp。 – jonosma

+0

IE8和IE9不支持XHR2,這意味着發送一個CORS請求,你必須使用不同的XHR。 jQuery不提供這種支持,因此您必須自己動手或安裝一個可以爲您提供支持的插件。將cors支持設置爲true絕對沒用,在桌面瀏覽器中絕不會有這種情況。 –

回答

3

嘗試將dataType更改爲jsonp

雖然服務需要支持這種類型的請求。

+0

我改變了我的數據類型,我得到了一個響應,但現在在Chrome中引發了一個錯誤,所以我現在可能需要在成功函數中解析它。 – AGarrett

+0

解析它不同嗎? – earl3s

+0

我還沒有確定如果我的JSON有問題或者是什麼,但一直無法解析。我確實確定我使用ie8或9時大約可以看到該網頁流量的1.44%,所以這不是我可以發送更多工作時間的東西。我相信我爲大部分用戶提供服務。 – AGarrett

0

是的,它不適用於IE8。

如果您需要支持IE8,請使用JSONP或postMessage或兩者的組合。