直到我需要上传一个抛出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
});
});
谢谢你, 亲切的问候!
答案 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
输入的表单。