这段代码有什么问题

时间:2016-02-04 08:53:34

标签: javascript jquery ajax firefox

表单提交的这段代码在Google Chrome中完美运行,而在Firefox中却没有。有人能告诉我我的代码有什么问题吗?

$(document).ready(function(e){
    /*sending post data to php script */
    $("form[id='postForm']").submit(function(e){
        e.preventDefault();  
        var text = $('#postText').val();
        var formData = new FormData($(this)[0]);
        formData.append('postText', text );

        $.ajax({  
             url: "home.php?module=facebook&action=post-news&method=script",  
             type: "POST",  
             data: formData,  
             cache: false,
             processData: false,  
             contentType: false, 
             context: this,
             success: function (msg) {
                  window.location.reload();
              }
          });     
        e.preventDefault();      
    }); 

    $('input:file').on('change', function () {  
            var formData = new FormData($(this)[0]);
            //Append files infos
            jQuery.each($(this)[0].files, function(i, file) {
             formData.append('imageToPost[' + i + ']', file);
            });
    }); 
});

1 个答案:

答案 0 :(得分:1)

快速检查控制台:

TypeError: Argument 1 of FormData.constructor does not implement interface HTMLFormElement.

问题在于:

$('input:file').on('change', function () {  
            var formData = new FormData($(this)[0]); <--- HERE

不是表单,而是输入元素。不确定你想在这里实现什么,但可能会序列化你的表单。为此你需要做:

 var form = $("#postForm")[0];
 var formData = new FormData(form);

然后附加你的文件。

希望这有帮助。