在下面的代码中,AngularJS $http
方法调用 URL,并将 xsrf 对象作为“请求负载”提交(如 Chrome 调试器网络选项卡中所述)。 jQuery $.ajax
方法执行相同的调用,但将 xsrf 作为“表单数据”提交。
如何让 AngularJS 将 xsrf 作为表单数据而不是请求负载提交?
var url = 'http://somewhere.com/';
var xsrf = {fkey: 'xsrf key'};
$http({
method: 'POST',
url: url,
data: xsrf
}).success(function () {});
$.ajax({
type: 'POST',
url: url,
data: xsrf,
dataType: 'json',
success: function() {}
});
最佳答案
以下行需要添加到传递的 $http 对象中:
headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}
传递的数据应转换为 URL 编码的字符串:
> $.param({fkey: "key"})
'fkey=key'
所以你有这样的东西:
$http({
method: 'POST',
url: url,
data: $.param({fkey: "key"}),
headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}
})
来自:https://groups.google.com/forum/#!msg/angular/5nAedJ1LyO0/4Vj_72EZcDsJ
更新
要使用 AngularJS V1.4 添加的新服务,请参阅
关于ajax - 如何将数据作为表单数据而不是请求负载发布?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11442632/