angularjs post问题-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

angularjs post问题

a123456678 2016-03-11 17:01:20 1589

很多时候我们需要用ajax提交post数据,angularjs与jq类似,也有封装好的post。

但是jQuery的post明显比angularjs的要简单一些,人性化一些。

AngularJS:

$http.post('do-submit.php',myData)
.success(function(){

// some code

});
jQuery:

$.post('do-submit.php', myData, function() {

// some code

});
看起来没什么区别吧?可是,用angularjs的$http提交的数据,在php服务器端却无法通过$_REQUEST/$_POST获取到,而需要用:

$params = json_decode(file_get_contents('php://input'),true);
来获取。什么原因呢?

这是因为两者的post对header的处理有所不同……jQuery会把作为JSON对象的myData序列化,例如:

var myData = { a : 1, b : 2 };
// jQuery在post数据之前会把myData转换成字符串:"a=1&b=2"
而Angular不会。

JSON JavaScript 前端开发 PHP 数据格式
分享到
取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 18:59:39

    angular post的请求是不会把数据序列化的哟,你需要修改一下$httpProvider就可以了

        $httpProvider.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';
        $httpProvider.defaults.transformRequest = function(obj){
            var str = [];
            for(var p in obj) {
                str.push(encodeURIComponent(p) + '=' + encodeURIComponent(obj[p]));
            }
            return str.join("&");
        };
        $httpProvider.defaults.headers.post = {
            'Content-Type': 'application/x-www-form-urlencoded'
        };
        
    0 0
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

推荐文章
相似问题