Я довольно новичок в javascript, и я искал решение этой проблемы весь день. Я нашел много вопросов/ответов, но ничего не сработало.jQuery Ошибка обратного вызова AJAX не срабатывает в IE
У меня есть страница с файлом, загружаемым в нее, я хотел бы запустить этот файл с помощью процедуры проверки на стороне сервера, а затем отобразить результат проверки на странице. У меня это отлично работает во всем, кроме IE (Safari, Chrome & Chromium, Firefox).
Чтобы сделать загрузку файлов в IE, пользователь должен отправить форму через кнопку отправки. Поэтому я использую условный комментарий в HTML, чтобы добавить его на страницу. В javascript я использую функцию обнаружения IE, которую я нашел здесь. Эта часть работает нормально.
Вот функция, которая делает Ajax запрос:
function handleUpload()
{
showSpinner();
var dFile = new FormData(document.getElementById("devConsValidate")); // this works in IE but only if called by a submit method
$.ajax(
{
cache: false,
async: false,
url: 'validator.php',
type: 'POST',
data: dFile,
dataType: 'JSON',
processData: false, // this is key for formdata
contentType: false, // so is this
success: function(response)
{
var result = response.result;
var validationCode = response.validation_code;
var errors = response.errors;
var htmlCode = '<h2>';
if (result == 'SUCCESS')
htmlCode += '<font color="green">';
else
{
htmlCode += '<font color="red">';
}
htmlCode += 'Validation ' + result + '</font></h3>';
if (result == "FAIL")
{
htmlCode += '</center>';
for (var i in errors)
htmlCode += errors[i] + '<br>';
htmlCode += '<br><a href="validator_help.php">Validator Help </a>';
}
else
{
htmlCode += 'Please use the following code when submitting your request.<br><br><font color ="#00aa54" size="+2">' + validationCode + '</font>';
}
// make some beautiful html
$('#resultsArea').html(htmlCode);
},
error: function (XMLHttpRequest, textStatus, errorThrown)
{
alert('error: ' + errorThrown);
}
});
}
функция handleUpload() вызывается либо на событие изменения файла или на форме их представления. validator.php возвращает массив значений json_encoded.
Проблема заключается в том, что при использовании IE обратный вызов ajax никогда не запускается, и браузер просто отображает строку необработанного JSON на пустой странице, поэтому вызов ajax работает и возвращает ожидаемые данные. В других браузерах срабатывает обратный вызов успеха, и json анализируется, и соответствующий код вставляется в div на странице.
Полный Javascript Файл: http://pastebin.com/G9MYBis5
Любые идеи?
Вы должны, вероятно, указать версию IE ... – maxedison
@maxedison только IE10 имеет FormData – Musa
Если ваша форма отправляет это означает, что где-то в вашем отправителе возникла ошибка. – Musa