У меня есть HTML-страница с кодом JavaScript, который отправляет запрос AJAX.Запрос обрабатывается моим сервлетом.Я подумал, что «лучше» и «правильнее» возвращать данные как MIME-тип «application / json» из сервлета (тип содержимого ответа).Тем не менее, это сводит MSIE с ума - это означает, что браузер, похоже, не способен отображать / обрабатывать этот тип MIME (Chrome / FF просто отлично).Когда я явно не указываю тип - он отлично работает во всех браузерах.Реально ли то, что тип MIME не должен возвращаться из сервлета для запросов AJAX?
Обновление: моя сторона сервера реализована на Java, а тип MIME определяется следующей строкой:
response.setContentType("application/json");
ответом является следующий текст (только пример):
{ "status" : "DONE", "progress" : 100, "url" : "/7909118672283641787.docx" , "totalBytes" : 17696 }
Update2: фрагмент, сделанный из моего клиентского кода (обычный javascript,нет библиотек)
function display_progress(http) {
if (http.readyState == 4) {
var again = false;
if (http.status != 200) {
document.getElementById('progress_bar').innerHTML = "Wrong response status received: " + http.status + "! Fix the server-side code.";
} else {
try {
var resp = eval('(' + http.responseText + ')');
var status = resp['status'];
if (status == 'DOING') {
document.getElementById('progress_bar').innerHTML = "Uploaded: " + resp['progress'] + "%";
again = true;
} else if (status == 'DONE'){
document.getElementById('progress_bar').innerHTML =
"Uploaded 100% (" + resp['totalBytes'] + " bytes)! Your file is <a href=\"" + resp['url'] + "\"/>" + "here" + "</a>";
} else if (status == 'ERROR') {
document.getElementById('progress_bar').innerHTML = "Error while uploading!";
} else {
document.getElementById('progress_bar').innerHTML = "Unexpected state: " + status + "! Fix the server-side code.";
}
} catch (ex) {
document.getElementById('progress_bar').innerHTML = "Wrong response received: " + resp + "! Fix the server-side code.";
}
}
if (again) {
setTimeout("update_progress()", 500);
}
}