jQuery AJAX 上传系统 IE 问题


jQuery AJAX Uploading system IE issue

我有Internet Explorer问题

这是使用AJAX和jQuery的脚本示例,在其他浏览器中工作正常,但IE则不能

索引.html

<form enctype="multipart/form-data" method="post">
    <input name="file" type="file" multiple="true" id="file" />
    <input type="button" value="Upload" /> or clic "U"
</form>

阿贾克斯.js

$(':button').click(function(){
    var formData = new FormData($('form')[0]);
    $("#data").html(formData);
    $.ajax({
        url: 'upload.php',  //server script to process data
        type: 'POST',
        xhr: function() {  // custom xhr
            myXhr = $.ajaxSettings.xhr();
            if(myXhr.upload){ // check if upload property exists
                myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // for handling the progress of the upload
            }
            return myXhr;
        },
        //Ajax events
        //beforeSend: beforeSendHandler,
        success: function(html) {
            $("#php").html(html);
            $("#file").val('');
        },
        error:function(html) {
            $("#php").html(html);
        },
        enctype: 'multipart/form-data',
        // Form data
        data: formData,
        //Options to tell JQuery not to process data or worry about content-type
        cache: false,
        contentType: false,
        processData: false
    });
});

在其他浏览器中工作正常,但在OperaIE中它不起作用。

这是控制台(F12)上的错误IE

SCRIPT5009: 'FormData' is undefined 
ajax.js, line 53 character 9

我应该怎么做才能解决问题?

SCRIPT5009:"FormData"未定义 ajax.js,第 53 行字符 9 这是代码

假设您的错误在这里,请将您的方法移动到您上面发布的代码之上FormData

例:

function FormData (form) {
   ....
}
$(':button').click(function(){
    var formData = new FormData($('form')[0]);
    $("#data").html(formData);
    $.ajax({
        url: 'upload.php',  //server script to process data
        type: 'POST'...

编辑

显然,IE不支持FormData。但是,你可以像这样使用jQuery的serialize

var formData = $('form').serialize();

FormData 类仅适用于 html 5,最新版本的浏览器支持 html5。

问题在于IE,即使是最新的IE在通过Ajax上传多个文件时也存在一些安全问题,但您可以上传一个文件。

如果您坚持使用 Ajax 上传,最好使用 iframe 或 Flash 对象在旧浏览器中上传