对象不支持ie9中的属性或方法提交

时间:2012-11-15 14:39:06

标签: jquery internet-explorer submit

我使用jquery.fileupload.js和jquery 1.7.2

<input class="file_upload_start" type="file" name="files[]" original-title="" multiple="multiple">

my file.js http://www.kcloud.vn/apps/files/js/files.js

$(function () {

    $('.file_upload_start').fileupload({

        dropZone:$('#content'), // restrict dropZone to content div
        add:function (e, data) {
            var files = data.files;
            var totalSize = 0;


data.submit().success(function (data, status) {
                                    response = jQuery.parseJSON(data[0].body.innerText);
                                    if (response[0] != undefined && response[0].status == 'success') {
                                        var file = response[0];
                                        delete uploadingFiles[file.name];
                                        $('tr').filterAttr('data-file', file.name).data('mime', file.mime);
                                        var size = $('tr').filterAttr('data-file', file.name).find('td.filesize').text();
                                        if (size == t('files', 'Pending')) {
                                            $('tr').filterAttr('data-file', file.name).find('td.filesize').text(file.size);
                                        }
                                        FileList.loadingDone(file.name);
                                    }

运行时出现错误SCRIPT438: Object doesn't support property or method 'submit' files.js, line 387 character 37

如何解决? 感谢提前!

1 个答案:

答案 0 :(得分:2)

以下是从http://www.kcloud.vn/apps/files/js/files.js到第387行的摘录。代码注释包含解释。

$(function () {
    $('.file_upload_start').fileupload({
        dropZone: $('#content'), // restrict dropZone to content div
        add: function (e, data) {
            //data.submit() should definitely exist in this scope.
            //...stuff...
            $.ajax({
                url: '/?app=files&getfile=ajax%2Fupload.php',
                dataType: "json",
                success: function (data) {
                    //which "data" is scoped here? "add" (parent) or "success" (local)?
                    //IE is picking local scope, not parent, which is causing your error.
                    //Rename the parameter variable to something else.
                    if (data.data.message == "DAT") {
                        //...stuff...
                    } else {
                        if (files) {
                            //...stuff...
                        }
                        if (totalSize > $('#max_upload').val()) {
                            //...stuff...
                        } else {
                            if ($.support.xhrFileUpload) {
                                //...stuff...
                            } else { //"data" below in "success" scope does not have a "submit" method, hence your error.
                                data.submit().success(function (data, status) { // <-- Line 387
                                    //Yet another parameter variable named "data".
                                    //This is asking for more trouble, rename this one too,
                                    //or define your functions elsewhere and reference them here.
                                    //...stuff...
                                });
                            }
//...stuff...