[Json] IE에서 jQuery AJAX 요청이 실패했습니다.


Answers

고정, content-type을 application/json; charset=utf8 에서 변경했습니다 application/json; charset=utf8 application/json; charset=utf8 을 일반 application/json .
내가 IE를 싫어 :)

또한 IE 슈퍼 캐싱을 피하려면 다음을 시도하십시오.

var d = new Date();
$.ajax({
        url:"{{SITE_URL}}/content/twitter.json?_="+d.getTime(), 
...Snip...

그렇게하면 각 요청은 IE가 얻을 수있는 새로운 URL입니다. D

Question

다음 AJAX 호출이 IE에서 실패합니다.

$.ajax({
    url:"{{SITE_URL}}/content/twitter.json",
    dataType:"json",
    error:function(xhr, status, errorThrown) {
        alert(errorThrown+'\n'+status+'\n'+xhr.statusText);
    },
    success:function(json) {
               ...Snip...
    }
});

error 함수는 다음을 반환합니다.

Undefined
parsererror
OK

서버에 대한 요청이 없으므로 JSON에 문제가 있다고 생각하지 않습니다.

수정 됨, # 1351389 참조




{{SITE_URL}} 덩어리 기부는 무엇입니까? 브라우저의보기 소스 코드에서 코드를 살펴 봅니다. {{SITE _URL}} 청크에 슬래시가 있고 요청 URL을 만드는 경우 :

http://modomain.com//content/twitter.json

IE를 망가뜨릴 수 있니?




정적으로 생성 된 JSON과 IE의 주요 문제점 중 하나가 "쉼표"의 선두입니다. 예를 들어 IE에서 오류가 발생합니다.

{
    "one":"hello",
    "two":"hi",
 }

마지막 쉼표를 주목하십시오.




IE는 AJAX 요청을 실제로 공격적으로 캐시합니다 (어쨌든 Firefox보다 더 많이). 귀하의 사이트에 적합하지 않은 경우 응답에 Cache-Control 헤더를 적절하게 설정해야합니다.




캐싱 문제에 대해 간단하게 cache: false 사용하지 마십시오 cache: false 매개 변수?

$.ajax({ 
    url: "yoururl",
    cache: false,
    ....



최신 버전의 Internet Explorer (IE7)에서는 $ .ajax 를 호출하기 전에 다음 줄을 작성해야합니다. 그렇지 않으면 함수를 호출하지 않습니다.

$.ajaxSetup({ cache: false }); //this line before $.ajax!!!
$.ajax({
    //codes
    //codes
    //codes
});






복사 / 붙여 넣기입니까? 항상 나를 얻는 한 가지는 객체 생성자에 마지막 ','을 남겨두고있는 것입니다. 즉, 대부분의 브라우저 JS 수용 :

o = { a:1, b:2, c:3, };

하지만 IE의 마지막 항목 이후에 쉼표 때문에이 chokes. 그것을 다음과 같이 변경하십시오 :

o = { a:1, b:2, c:3 };

작동합니다.