Загрузка файла формы 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 и найти разницу.

Другие вопросы по тегам