2015-10-20 114 views
0
function uploadFile(){ 

    var file = $("file1").files[0]; 
    var formdata = new FormData(); formdata.append("file1", file); 
    var ajax = new XMLHttpRequest(); 
    ajax.upload.addEventListener("progress", progressHandler, false); 
    ajax.addEventListener("load", completeHandler, false); 
    ajax.addEventListener("error", errorHandler, false); 
    ajax.addEventListener("abort", abortHandler, false); 
    ajax.open("POST", "upload.php"; 
    ajax.send(formdata); 

} 

ERROR1:無法獲得屬性的值「0」:對象爲空或未定義文件上傳不工作的Internet Explorer 8和9

誤差2:ForData不支持。

回答

0

FormData API不受IE8或IE9支持。它只在IE10中添加。如果你想支持這些舊瀏覽器,那麼你不能使用現代的HTML5 API。

有一個jQuery Forms插件可以在舊的IE版本中工作,並且可以讓你通過ajax上傳文件。我自己使用它,它非常有效。你可以在這裏下載:http://malsup.com/jquery/form/。您可能需要重新編寫代碼才能使用它,因爲它與HTML5 FormData API在概念上完全不同,但至少您會得到可以在您希望支持的所有瀏覽器中使用的內容。

你也可以嘗試查看是否有一個FormData的polyfill,它可以讓你繼續使用你現有的代碼。快速谷歌翻了起來this one,我發現列表here。我沒有嘗試過,所以不能擔保,但Modernizr列出的polyfills一般都很好。