ajax - 如何将数据作为表单数据而不是请求负载发布?

标签 ajax angularjs post angular-http

在下面的代码中,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/

相关文章:

angularjs - 在html5模式下使用ng-route重新加载 Angular 页面不会返回index.html

html - 我应该在页面上使用一个表单还是为每个项目生成一个表单?

java - 为什么 HttpClient 不发送我的 Cookie?

reactjs - 如何在 useEffect 中使用新鲜状态,但仅在卸载时执行清理

jquery - 如何用jsf reRender或ajax加载替换html内容,并用AngularJS重新绑定(bind)新的DOM?

php - select2 成功时检索新创建的标签 ID

javascript - 如何保存 "invisible"值并使用 JavaScript 获取它们

php - 多个 like 或多个 where 子句

javascript - 为什么 ngClick 在 $compile 之后不再工作?

javascript - AngularJS - 如何进行级联选择并保存到 API