Загрузка файла формы jQuery Ответ об ошибке IE8 null
У меня есть проблема, специфичная для IE8 с плагином формы jQuery.
Я загружаю один файл через multipart/form-data и использую плагин jQuery для обработки ошибок. В FF все работает нормально, но в IE8 объект jqHXR, который передается в методе обработки ошибок, пуст (status = 0, text = null и т. Д. Вместо status = 500, text = "Some message error"). Вот часть кода, который я использую:
Форма HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<form name=\"myForm\" id=\"myForm\" action=\"uploadServlet\" method=\"POST\" enctype=\"multipart/form-data\">");
<input type=\"file\" id=\"browseBox\" name=\"file1\"/>
<input type=\"submit\" id=\"uploadButton\"/>
</form>
JQuery:
$("#myForm").submit(upload);
$("#myForm").ajaxForm();
function upload() {
var options = {
async: false,
success: uploadSuccessful,
error: uploadError
}
$("#myForm").ajaxSubmit(options);
return false;
}
function uploadSuccessful(data) {
alert(data);
}
function uploadError(jqXHR, textStatus, err) {
alert(jqXHR.responseText);
}
Как я уже упоминал, jqXHR пуст в IE8, но не так в FF. Сервлет отвечает простым текстом, который я показываю пользователю. Есть идеи, почему IE8 не может получить ответ от моего сервлета?
2 ответа
IE8 отправляет форму файла в виде запроса GET, когда вы используете JqueryForms... Вы должны установить
type: "post"
в ваших настройках jquery форм.
Это случилось и со мной, и когда я запустил Fiddler, я обнаружил, что с помощью ff/ie9/chrome/etc запрос отправляется с POST, а с ie8 - с GET - который возвращает ошибку 404 с сервера (в моем случае).. мое решение было добавить method=post в форму, но я вижу, что вы уже написали это. Попробуйте сравнить запросы от ff и ie8 в fiddler и найти разницу.