angular post json数据到服务器,跨域访问,多大括号

 

angular.module('myApp',[]).config(function($httpProvider) {
            $httpProvider.defaults.useXDomain = true;
            delete $httpProvider.defaults.headers
                .common['X-Requested-With'];
            $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
            $httpProvider.defaults.headers.put['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
            // Override $http service's default transformRequest
            $httpProvider.defaults.transformRequest = [function(data)
            {
                /**
                 * The workhorse; converts an object to x-www-form-urlencoded serialization.
                 * @param {Object} obj
                 * @return {String}
                 */
                var param = function(obj)
                {
                    var query = '';
                    var 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];
                                if(subValue != null){
                                    // fullSubName = name + '[' + subName + ']';
                                    fullSubName = name + '.' + subName;
                                    // fullSubName =  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;
                };


                return angular.isObject(data) && String(data) !== '[object File]' ? param(data) : data;
            }];

        })

 

 

 

 

 

 

 

感谢,终于找到json数据post到服务器的传输方式,不会再报跨域访问和服务器接收格式的错误
,多个括号的问题烦死我了,({'{"params1":"xxxx","params2":"cxxxxxx"}',''}),终于解决了,

说白了就是转成application/x-www-form-urlencoded , 参数之间加上&

或者你post请求的data,定义由 data: {"params1":"xxxx","params2":"cxxxxxx"}  改成params1="xxxx"&params2="xxxx",

 

1.以下是我定义,主要用于解决跨域访问,是angularjs CORS提供的标准方式

 $httpProvider.defaults.useXDomain = true;
 delete $httpProvider.defaults.headers.common['X-Requested-With'];
 $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
 $httpProvider.defaults.headers.put['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';

 2.

$httpProvider.defaults.transformRequest 这个定义被重写,

帮我们完成了json数据请求转成params1="xxxx"&params2="xxxx"格式

 

 

欢迎关注我的微信公众号-搜索 “前端琅琊阁“ 即可

如果还有问题,可以向我提问:

向我提问



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值