【发布时间】:2015-12-01 23:56:36
【问题描述】:
让我们直接进入代码:
var formData = new FormData();
formData.append('name', dogName);
formData.append('weight', dogWeight);
formData.append('activity', dogActivity);
formData.append('age', dogAge);
formData.append('file', document.getElementById("dogImg").files[0]);
console.log(formData);
这里我将一些字符串和一个文件对象附加到 formData 对象,以便将所有信息异步发送到服务器。
之后我有这个 jquery ajax 请求:
$.ajax({
type: "POST",
url: "/foodoo/index.php?method=insertNewDog",
data: JSON.stringify(formData),
processData: false, // tell jQuery not to process the data
contentType: "multipart/form-data; charset=utf-8",
success: function(response){
console.log(response);
},
error: function(){
}
});
所以我在这里尝试将信息 POST 到服务器,在服务器 php 文件上我有一个简单的 POST print_r,所以我可以看到什么通过,什么不通过。
很遗憾,我在 console.log(data) 中的回复是空的。
此外,如果您检查“网络”选项卡中的 HEADER,您会得到以下空输出:
成功函数被调用(只是为了澄清)
【问题讨论】:
-
JSON.stringify仅适用于 plain 对象/数组。FormData不是普通对象。你必须通过FormData.getAll()而不是FormData -
数据:JSON.stringify(formData.getAll()) ?这会导致 Uncaught TypeError: formData.getAll is not a function
-
那么就不要使用
JSON.stringify了。按原样传递formData。 -
好的,当我按原样发送它时 - 然后 print_r 将 php 文件中的对象和 console.log 它作为响应我得到一个简单的 ---- 但是请求有效负载在Network 中的 Header TAB 现在填写了发送数据
标签: javascript jquery ajax form-data