2013-10-23 1 views
3

나는이 anwser를 찾을 수 있어야한다고 생각하지만 수 시간의 연구 끝에 성공을 거두었습니다. API 서비스를 호출하는 jquery ajax가있는이 page이 있습니다. 크롬, 사파리, 파이어 폭스, 심지어 IE 10에서도 정상적으로 작동합니다. 그러나 IE 9와 8은 실패한 것으로 보입니다. 여기 jquery ajax call 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. 은 $ 아약스 설정
  2. http://mvcdiary.com/2013/01/16/jquery-ajax-request-not-working-in-ie9/ 당 설정 설정 '$ .support.cors을 = 사실을;' AJAX 호출 'jquery.iecors.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 support를 true로 설정하는 것은 절대적으로 쓸모가 없으며, 데스크탑 브라우저에서 절대 원하지 않는 경우는 없습니다. –

    답변

    3

    dataTypejsonp으로 변경해보십시오.

    서비스가이 유형의 요청을 지원해야하지만.

    +0

    데이터 유형이 변경되어 응답을 받았지만 이제는 Chrome에서 오류가 발생하므로 성공 함수에서 다른 구문을 분석해야 할 가능성이 큽니다. – AGarrett

    +0

    파싱이 다르게 작동 했나요? – earl3s

    +0

    JSON에 문제가 있거나 무엇을 파싱 할 수 있는지 결정하지 못했습니다. 나는 ie8 또는 9를 사용하여 해당 페이지로 트래픽의 대략 1.44 %를보고 있다고 판단 했으므로 더 많은 시간을 보낼 수있는 것이 아닙니다. 나는 대부분의 사용자에게 도움이된다고 생각한다. – AGarrett

    0

    예, IE8에서는 작동하지 않습니다.

    IE8을 지원해야하는 경우 JSONP 또는 postMessage 또는 둘 모두를 사용하십시오.