如何使用 jquery 提交多部分表单数据
How to submit multipart formdata using jquery
<form id="uploadForm" enctype="multipart/form-data" action="http://localhost:1337/ad/upload" method="post" name="uploadForm" novalidate>
<input type="file" name="userPhoto" id="userPhoto" />
<input type="submit" value="submit" id="uploadImage" />
</form>
这是我的 html 表单,它接受图像作为文件输入,用户可以 select 一个图像文件,然后单击提交。这有效,但当前页面的 url 更改为 localhost:1337/ad/upload。我希望页面保持不变 url.
$("form#uploadForm").submit(function(event) {
event.preventDefault();
var formData = new FormData($(this)[0]);
var posting = $.post(url, formData);
})
我试过使用 jquery 发送表单,但出现错误:未捕获类型错误:非法调用
当type为multipart /formdata时,表单提交什么数据,我们如何在jQuery
上获取这些数据
你可以把所有的表单交给formData处理
var form = $('#uploadForm')[0];
// You need to use standart javascript object here
var formData = new FormData(form);
或为表单数据指定准确的数据
var formData = new FormData();
formData.append('userPhoto', $('input[type=file]')[0].files[0]);
processData
默认情况下,作为对象(从技术上讲,除了字符串以外的任何对象)传递给数据选项的数据将被处理并转换为查询字符串,适合默认的内容类型 "application/x-www-form-urlencoded"。如果要发送 DOMDocument 或其他未处理的数据,请将此选项设置为 false。
像这样尝试 ajax -
var form = new FormData($("#uploadForm")[0]);
$.ajax({
url: your_url,
method: "POST",
dataType: 'json',
data: form,
processData: false,
contentType: false,
success: function(result){},
error: function(er){}
});
对于那些寻求更现代方法的人,您可以使用 JS Fetch(无需额外的库 - jquery)。
var formData = new FormData(this);
fetch(url, {
method: 'POST',
body: formData
})
.then(response => {
if (response.ok) {
//success
} else {
throw Error('Server error');
}
})
.catch(error => {
console.log('fail', error);
});
<form id="uploadForm" enctype="multipart/form-data" action="http://localhost:1337/ad/upload" method="post" name="uploadForm" novalidate>
<input type="file" name="userPhoto" id="userPhoto" />
<input type="submit" value="submit" id="uploadImage" />
</form>
这是我的 html 表单,它接受图像作为文件输入,用户可以 select 一个图像文件,然后单击提交。这有效,但当前页面的 url 更改为 localhost:1337/ad/upload。我希望页面保持不变 url.
$("form#uploadForm").submit(function(event) {
event.preventDefault();
var formData = new FormData($(this)[0]);
var posting = $.post(url, formData);
})
我试过使用 jquery 发送表单,但出现错误:未捕获类型错误:非法调用
当type为multipart /formdata时,表单提交什么数据,我们如何在jQuery
上获取这些数据你可以把所有的表单交给formData处理
var form = $('#uploadForm')[0];
// You need to use standart javascript object here
var formData = new FormData(form);
或为表单数据指定准确的数据
var formData = new FormData();
formData.append('userPhoto', $('input[type=file]')[0].files[0]);
processData
默认情况下,作为对象(从技术上讲,除了字符串以外的任何对象)传递给数据选项的数据将被处理并转换为查询字符串,适合默认的内容类型 "application/x-www-form-urlencoded"。如果要发送 DOMDocument 或其他未处理的数据,请将此选项设置为 false。
像这样尝试 ajax -
var form = new FormData($("#uploadForm")[0]);
$.ajax({
url: your_url,
method: "POST",
dataType: 'json',
data: form,
processData: false,
contentType: false,
success: function(result){},
error: function(er){}
});
对于那些寻求更现代方法的人,您可以使用 JS Fetch(无需额外的库 - jquery)。
var formData = new FormData(this);
fetch(url, {
method: 'POST',
body: formData
})
.then(response => {
if (response.ok) {
//success
} else {
throw Error('Server error');
}
})
.catch(error => {
console.log('fail', error);
});