我很新的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瀏覽器,阿賈克斯成功回調從來沒有發射,瀏覽器只顯示空白頁上生JSON字符串,所以Ajax調用工作並返回預期的數據是。在其他瀏覽器上,成功回調會觸發並解析json,並將適當的代碼插入到頁面上的div中。
的完整JavaScript文件:http://pastebin.com/G9MYBis5
任何想法?
你應該指定IE的版本...... – maxedison
@maxedison只有IE10有FormData – Musa
如果你的表單提交了,那意味着你的某個地方提交處理程序時發生錯誤。 – Musa