source

IE에서 jQuery ajax 호출과 함께 '전송 불가' 오류 발생

gigabyte 2023. 3. 10. 22:04
반응형

IE에서 jQuery ajax 호출과 함께 '전송 불가' 오류 발생

장소를 검색하려면 foursquare API를 사용해야 합니다.물론 그것은 교차 도메인이다.

파이어폭스에서는 문제가 없지만 Internet Explorer에서는 문제가 없습니다(7, 8, 9 테스트 완료).

javascript 코드는 다음과 같습니다.

searchVenues: function(searchQuery) {
    $.ajax({
       url: 'https://api.foursquare.com/v2/venues/search',
       data: {
            sw: bound_south_west,
            ne: bound_north_east,
            query: searchQuery.query,
            oauth_token: FSQ_OAUTH_TOKEN,
            limit: 25,
            intent: 'browse',
            v: 20120206
       },
       cache: false,
       dataType: 'json',
       success: function(data) {
           displayResults(data, searchQuery.query);
       },
       error: function(xhr, status, errorThrown) {
           console.log(errorThrown+'\n'+status+'\n'+xhr.statusText);
       }
    });
}

파이어폭스에서는, 수신한 데이터를 완전하게 표시합니다.Internet Explorer에서는 콘솔에 기록됩니다.

No Transport
Error
Error

어떻게 해야 하나?

Windows Mobile 7에서 테스트했습니다.

많은 시간을 들여서 이해한 결과, 다음과 같은 사실을 알게 되었습니다.

http://bugs.jquery.com/ticket/10660

솔루션은 간단합니다.설정만 하면 됩니다.

$.support.cors = true;

도메인 간 Ajax 요청이 작동합니다.

jQuery.support.cors = true;

$.ajax({
  crossDomain: true,
  url: "",
  type: "POST",
  dataType: "xml",
  data: soapMessage,
});

교차 도메인 값을 true로 만들어야 합니다.

다음 솔루션을 사용해 보십시오.

https://stackoverflow.com/a/14463975/237091

또는 jquery를 포함한 직후에 이 코드를 HTML에 넣기만 하면 됩니다.

<!--[if lte IE 9]>
<script type='text/javascript' src='//cdnjs.cloudflare.com/ajax/libs/jquery-ajaxtransport-xdomainrequest/1.0.3/jquery.xdomainrequest.min.js'></script>
<![endif]-->

이 문제가 한동안 나를 괴롭히고 있다.회피책으로 같은 사이트에 있는 프록시 스크립트를 사용합니다.이러한 스크립트는 단순히 서버 간 비 ajax HTTP 요청을 실행합니다(컬과 WinHttp를 생각해 보십시오).WinHttpRequest)를 사용하여 상태와 데이터를 발신자에게 전달합니다.동작합니다만, 2개의 HTTP 요구를 실행할 필요가 있기 때문에 그다지 효율적이지 않습니다.

이 경우 솔루션은 위에서 설명한 모든 내용과 'Access-Control-Allow-Origin' 헤더를 조합한 것입니다.

$.support.cors = true; // this must precede $.ajax({}) configuration

$.ajax({
  crossDomain: true, // added in jQuery 1.5
  headers: {
    'Access-Control-Allow-Origin': '*'
  },
  ...
});

이러한 호출에 응답하는 웹 서비스는 'Access-Control-Allow-Origin: *' 헤더로도 응답합니다.

jquery 버전을 변경하고 CDN 링크를 교체했는데 작동했어요!그냥 해.crossDomain:true그리고.$.support.cors= true는 작동하지 않습니다.

<script src="https://code.jquery.com/jquery-3.5.1.js" integrity="sha256-QWo7LDvxbWT2tbbQ97B53yJnYU3WhH/C8ycbRAkjPDc=" crossorigin="anonymous"></script>

언급URL : https://stackoverflow.com/questions/9160123/no-transport-error-w-jquery-ajax-call-in-ie

반응형