我正在通过REST API上传表单数据,并且我正在使用以下代码。它给我错误代码415,且媒体类型不受支持。
请纠正我哪里出错了。
var device = new FormData();
device.append("device_id", "2");
device.append("Img","D:\\Main\\xampp\\htdocs\\test\\img\\default.png");
$.ajax(
{
type: 'POST',
url: getApiURL(25),
data: device,
processData: false,
"mimeType": "multipart/form-data",
headers: {
"Authorization": "Basic " + base_64_firebase_token,
"Content-Type": "application/x-www-form-urlencoded",
},
success : function(data){
callback(data);
},
error: function (xhr,ajaxOptions,throwError){
console.log(xhr);
console.log(ajaxOptions);
console.log("Error!!!"+throwError);
}
}
);
答案 0 :(得分:0)
如果您只想添加静态图像,则如果仍要添加静态图像,或者必须发送用户添加的图像,请执行以下操作:
要正确使用表格数据,您需要执行2个步骤。
准备工作
您可以将整个表单交给FormData()进行处理
var form = $('form')[0]; // You need to use standard javascript object here
var formData = new FormData(form);
或为FormData()指定确切数据
var formData = new FormData();
formData.append('section', 'general');
formData.append('action', 'previewImg');
// Attach file
formData.append('image', $('input[type=file]')[0].files[0]);
发送表单
带有jquery的Ajax请求将如下所示:
$.ajax({
url: 'Your url here',
data: formData,
type: 'POST',
contentType: false, // NEEDED, DON'T OMIT THIS (requires jQuery 1.6+)
processData: false, // NEEDED, DON'T OMIT THIS
// ... Other options like success and etc
});
此后,它将发送ajax请求,就像您使用enctype="multipart/form-data"
更新:如果没有选项中的type:"POST"
,该请求将无法工作,因为所有文件都必须通过POST请求发送。
注意:contentType: false
仅from jQuery 1.6 onwards
答案 1 :(得分:-1)
在AJAX通话中,您需要设置内容类型:
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},