出于某种原因,我无法从表单中获取[object Object]。我在这里使用的是hte方法: http://badwing.com/multipart-form-data-ajax-uploads-with-angularjs/#comment-431
我发送的JSON非常复杂(样本):
{
"challenge_id": 262,
"priority": "0",
"cause_id": "29",
"timestamp": "2013-11-29 12:06:01",
"translations": {
"en": {
"name": "asdfgsfd",
"description": "sdfghfs"
}
},
"actions": {
"1": {
"type": "chek",
"step": "1",
"translations": {
"en": {
"description": "adsfas"
}
}
},
"2": {
"type": "chek",
"step": "2",
"translations": {
"en": {
"description": "fsdgsd"
}
}
}
}
}
我的回答如下:
Content-Disposition: form-data; name="challenge_json"
[object Object]
我的请求如下:
return $http.post( REQUEST_URL + '/ENDPOINT', {challenge_json:data}, {
transformRequest: function(data) {
console.log(data);
var fd = new FormData();
angular.forEach(data, function(value, key) {
fd.append(key, value);
});
console.log(fd);
return fd;
}
我使用httpProvider配置更改修改标头。但是我已经尝试过这样做,并得到了相同的结果。 任何帮助将不胜感激。
答案 0 :(得分:0)
您似乎接近解决方案,但需要取消设置内容类型'传递给$ http的选项中的标头,以便xmlhttprequest对象在其send方法上获得formdata时可以自动添加它。
https://groups.google.com/d/topic/angular/MBf8qvBpuVE/discussion
在这里看一个游乐场http://jsfiddle.net/Lv1n55db/1/
(直接提供FormData对象和无操作转换,或者你提供普通数据对象的方式并将其转换为transformRequest中的FormData没有显着区别,关键是在header选项中)
headers:{'Content-Type':undefined},
它可能因不同的浏览器和不同的angularjs版本而异。 一个更加确定和稳定的方法,至少如果你不需要文件字段等,可能是不使用本机FormData,而是实现序列化来自己串起来,就像FormData polyfill那样。