2010-04-17 2 views
5

ajax 호출은 FF에서 올바르게 작동합니다. 반환 데이터가 여기에 JSON에 FF에 불을 지르고에서 예입니다 -IE8 + Jquery ajax 호출 dJango에서 parsererror 제공 : Firefox에서 유효한 json 데이터의 경우

{ "noProfiles는": "지금 시작할 수 있습니다, 어떤 프로파일이 생성되지 않았습니다"}

내가 인쇄하려고 할 IE8의 오류 (호환 모드에서도 &) "parsererror"라고 말합니다.
하지만 출력이 유효한 JSON 인 것 같습니다.
다음은 내가 작성중인 ajax 함수 호출입니다.
모든 포인터가 좋을 것입니다! 주고 위의 오류 함수의

$.ajax({ 
    type: "GET", 
    url: "/get_all_profile_details/", 
    data: "", 
    dataType: "json", 
    beforeSend: function() {alert("before send called");}, 
    success: function(jsonData) { 
     alert("data received"); 
    }, 
    error: function(xhr, txt, err){ 
     alert("xhr: " + xhr + "\n textStatus: " + txt + "\n errorThrown: " + err); 
    } 
}); 

경고 -
xhr:<blank>
textstatus:parsererror
errorThrown: undefined

모든 포인터가 좋은 것입니다!
참고 : JQuery와 : 콘텐츠-Type 헤더는 응용 프로그램/JSON으로 설정되어있는 경우 1.3.2

답변

8

여기 제가 마지막으로 찾은 해결책입니다!

IE는 UTF-8에 대한 항문입니다.
나는 아래로 내 대답을 공식화했다 :

return HttpResponse(simplejson.dumps(response_dict), 
        content_type = 'application/json; charset=utf8') 

이제 FF & 크롬이 좋은 것입니다.
그러나 IE의 UTF8은 다음과 같이해야한다 :

return HttpResponse(simplejson.dumps(response_dict), 
        content_type = 'application/json; charset=UTF-8') 

참고 모자 UTF - >>UTF-8

문제를 디버깅하기 위해, 나는 맨손으로 뼈를 내 jQuery를 던졌다 썼다 ajax 함수. 인코딩이 잘못된 경우

var xmlhttp = false;  
if (window.XMLHttpRequest) 
{// code for IE7+, Firefox, Chrome, Opera, Safari  
    xmlhttp=new XMLHttpRequest();  
    xmlhttp.open("POST",urlToSend,false);  
    xmlhttp.send(af_pTempString);  
}  
else  
{// code for IE6, IE5  
    xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");  
    xmlhttp.open("POST",urlToSend,false);  
    // Do not send null for ActiveX  
    xmlhttp.send(af_pTempString);  
}  
//alert("xmlhttp.responseText : " + xmlhttp.responseText);  
document.getElementById('navHolder').innerHTML = xmlhttp.responseText; 

, 그것은 IE에서 당신이 오류를주지 - c00ce56e

+0

코드를 붙여 넣을 때 "af_pTempString is not defined"오류가 발생합니다. 나는 무엇을 놓치고 있습니까?af_pTempString이란 무엇입니까? – Gagan

0
  1. 확인합니다.

  2. dataType : "json"을 제거하고 IE8에서 얻은 원시 응답을 인쇄하십시오. 어쩌면 다른 이유로 (유효하지 않은 JSON) 응답이 IE (8)로 전송됩니다.

  3. 최신 버전의 jQuery로 시도해보고 문제가 지속되는지 확인하십시오.

+0

현재 콘텐츠 형식이 --- >> text/html 대신 application/json을 삽입했는데 같은 오류가 발생했습니다. 그 후 나는 'dataType : "json"을 주석 처리했지만 여전히 동일한 오류가 발생했습니다. 지금 jquery 1.4.2를 사용 중입니다. – PlanetUnknown

+0

장고 앱입니다. 따라서 content-type은 다음과 같이 설정됩니다. - HttpResponse (simplejson.dumps (response_dict), content_type = 'application/json; charset = utf8')를 반환하십시오. 1.4.2로 변경되었지만 도움이되지 않았습니다. – PlanetUnknown