FormData()-JQUERY

时间:2018-12-11 19:28:57

标签: javascript php jquery forms performance

直到我需要上传一个抛出AJAX的文件,我才知道有没有一种类似“ FormData()”的方法来发布FORM的所有值等等。

我测试了文件上传并工作得很完美,但是我也可以发送其他POST数据,这变得更好。

即使我没有要上传的文件,我是否也可以在所有表​​单中始终使用此功能抛出AJAX?还是缩小了其他上传文件的大小?

就性能而言,最好获取输入值并作为数据发送,或者我可以使用它来简化吗?

我可以找到的唯一信息是文件上传,而不是此方法的一般使用。

代码示例:

<form id="theForm">
<<input id="test" type="text" name="test" placeholder="test" required="">
<input id="uploadFile" type="file" name="uploadFile" placeholder="uploadFile" required="">
<input id="submitFile" type="submit">
</form> 

$("#submitFile").on("click",function(event){

    event.preventDefault();

    var formData = new FormData($('#theForm')[0]);

    $.ajax({

            type: "POST",
            url: "inc/upload.php",
            data: formData,
            contentType: false,
            processData: false,
           beforeSend: function() {

               //Do Something 
         },

        })
        .done(function()
        {

        //Do Something 


        });


});

谢谢你, 亲切的问候!

1 个答案:

答案 0 :(得分:0)

是的,您可以将FormData()用于任何形式。唯一的缺点是它是一种更加冗长的格式。它使用multipart/form-data编码而不是application/x-www-form-urlencoded。代替简洁的语法:

name1=value1&name2=value2&...

表单参数将按照以下方式发送:

--Delimiter
Content-Disposition: form-data; name="name1"

value1
--Delimiter
Content-Disposition: form-data; name="name2"

value2
--Delimiter
...

Delimiter是一个随机的长字符串。

jQuery有一个方法$("#theForm").serialize(),它将返回URL编码的字符串。可以将其用于任何不包含file输入的表单。