$http.post('request-url',{ 'message' : message });
我也试过它与数据作为字符串(具有相同的结果):
$http.post('request-url',"message=" + message);
它似乎是工作,当我使用它在以下格式:
$http({ method: 'POST',url: 'request-url',data: "message=" + message,headers: {'Content-Type': 'application/x-www-form-urlencoded'} });
但是有一种方法使用$ http.post() – 并且我总是要包括标题才能工作?我相信上面的内容类型是指定发送数据的格式,但是我可以发送它作为javascript对象吗?
There is much confusion among newcomers to AngularJS as to why the
$http
service shorthand functions ($http.post()
,etc.) don’t appear to
be swappable with the jQuery equivalents (jQuery.post()
,etc.)The difference is in how jQuery and AngularJS serialize and transmit the data. Fundamentally,the problem lies with your server language of choice being unable to understand AngularJS’s transmission natively … By default,jQuery transmits data using
06000
and the familiar
foo=bar&baz=moe
serialization.AngularJS,however,transmits data using
06001
and
{ "foo": "bar","baz": "moe" }
JSON serialization,which unfortunately some Web server languages—notably
PHP—do not unserialize natively.
奇迹般有效。
码
// Your app's root module... angular.module('MyModule',[],function($httpProvider) { // Use x-www-form-urlencoded Content-Type $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8'; /** * The workhorse; converts an object to x-www-form-urlencoded serialization. * @param {Object} obj * @return {String} */ var param = function(obj) { var query = '',name,value,fullSubName,subName,subValue,innerObj,i; for(name in obj) { value = obj[name]; if(value instanceof Array) { for(i=0; i<value.length; ++i) { subValue = value[i]; fullSubName = name + '[' + i + ']'; innerObj = {}; innerObj[fullSubName] = subValue; query += param(innerObj) + '&'; } } else if(value instanceof Object) { for(subName in value) { subValue = value[subName]; fullSubName = name + '[' + subName + ']'; innerObj = {}; innerObj[fullSubName] = subValue; query += param(innerObj) + '&'; } } else if(value !== undefined && value !== null) query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&'; } return query.length ? query.substr(0,query.length - 1) : query; }; // Override $http service's default transformRequest $httpProvider.defaults.transformRequest = [function(data) { return angular.isObject(data) && String(data) !== '[object File]' ? param(data) : data; }]; });
原文地址:https://www.jb51.cc/angularjs/148009.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。