我正在尝试使用 jQuery Ajax 发送 POST 请求,我想在其中上传文件和一些 json 数据。请查找代码,
var logoImg = $('input[name="logoImg"]').get(0).files[0];
var formData = new FormData();
formData.append('logo', logoImg);
var objArr = [];
objArr.push({
"id": id,
"name": userName
});
var obj = [{
"objArr": objArr,
"formData": formData
}];
$.ajax({
type: "POST",
url: url,
dataType: "json",
data: JSON.stringify(obj),
contentType: "application/json",
cache: false,
async: false,
complete: function(data) {
alert("success");
}
});
但我越来越Internal server error: 500
并且不调用后端API。
请帮助我在同一 AJAX 请求中发送文件和数组对象。提前致谢
您无法序列化在请求中发送的任何二进制数据。
发送附加信息FormData
对象,只需使用append()
添加它的方法,类似于使用图像本身的方式:
var logoImg = $('input[name="logoImg"]').get(0).files[0];
var formData = new FormData();
formData.append('logo', logoImg);
formData.append('id', id);
formData.append('name', userName);
$.ajax({
type: "POST",
url: url,
data: formData,
contentType: false,
processData: false,
cache: false,
complete: function(data) {
alert("success");
}
});
注意选项中重要的部分是设置contentType
and processData
to false
,并删除async: false
以便请求异步发生。
最后,请注意,如果您要在请求中发送的输入全部包含在同一个表单中,您可以使用FormData
构造函数将代码简化为:
var formData = new FormData($('#yourForm')[0]);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)