1

我有问题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>

ajax.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
    });
});

Opera在其他浏览器中工作正常,但在IE它不工作。

这是 CONSOLE( F12) 错误IE

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

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

4

2 回答 2

0

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'...

编辑

显然,FormData在 IE 中不支持。但是,您可以serialize像这样使用 jQuery:

var formData = $('form').serialize();
于 2012-08-09T20:29:04.710 回答
0

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

问题是对于 IE,即使是最新的也有一些通过 ajax 上传多个文件的安全问题,但你可以上传一个文件。

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

于 2013-02-06T02:04:35.107 回答