Вызов ajax хорошо работает в И следующие возвращенных данных, находится в JSON, вот пример от поджигателя FF -
{"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: 1.3.2
Вот решение, которое я наконец нашел!
IE не любит UTF-8, не только это!
Я сформулировал свой ответ следующим образом:
return HttpResponse(simplejson.dumps(response_dict),
content_type = 'application/json; charset=utf8')
Теперь FF и Chrome хорошо справляются с этим.
Но для 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
Проверьте, установлен ли заголовок Content-Type на application / json.
Удалите dataType: "json" и распечатайте необработанный ответ, который вы получите в IE8. Возможно, по какой-то причине IE (8) отправляется другой ответ (недействительный JSON)
Попробуйте использовать последнюю версию jQuery и посмотрите, сохраняется ли проблема.