博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
angular与jquery 进行json提交数据,报文头格式不一致的解决方案
阅读量:6283 次
发布时间:2019-06-22

本文共 2541 字,大约阅读时间需要 8 分钟。

  默认情况下,jQuery传输数据使用Content-Type: x-www-form-urlencodedand和类似于"foo=bar&baz=moe"的序列,然而AngularJS,传输数据使用Content-Type: application/json和{ "foo": "bar", "baz": "moe" }这样的json序列

  Angular的默认请求头如下:

  $httpProvider.defaults.headers.post: (header defaults for POST requests)

  Content-Type: application/json

  $httpProvider.defaults.headers.put(header defaults for PUT requests)

  Content-Type: application/json

其中Angular的post和put都是application/json,而jquery的post请求的"Content-Type"默认为" application/x-www-form-urlencoded",所以Angular需要把Content-Type设置成x-www-form-urlencodedand之后,还需要转换序列的格式。

 

app.config(function($httpProvider) {    $httpProvider.defaults.headers.put['Content-Type'] = 'application/x-www-form-urlencoded';    $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded';     // 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];                        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;        };         return angular.isObject(data) && String(data) !== '[object File]'                ? param(data)                : data;    }];});

 

转载于:https://www.cnblogs.com/kristain/articles/4350669.html

你可能感兴趣的文章
talend 将hbase中数据导入到mysql中
查看>>
内置在虚拟机上64位操作系统:该主机支持 Intel VT-x,但 Intel VT-x 残
查看>>
Material Design练习
查看>>
[译] 二、开始iOS编程之前,你还需要做什么?
查看>>
Oracle 查看表空间的大小及使用情况sql语句
查看>>
加密解密帮助类(对称加密)
查看>>
分页和多条件查询功能
查看>>
ActiveReport开发入门-图表的交互性
查看>>
iOS开发之遍历Model类的属性并完善使用Runtime给Model类赋值
查看>>
Echarts图表控件使用总结2(Line,Bar)—问题篇
查看>>
【转载】CString、BSTR和LPCTSTR之间的区别
查看>>
淘宝开放源码WebserverTengine基本安装步骤
查看>>
thinkphp达到UploadFile.class.php图片上传功能
查看>>
如何在windows server 2008上配置NLB群集
查看>>
.NET 下各种Resource的读取方式
查看>>
【jQuery】jQuery筛选器规则
查看>>
采用UltraISO制作U菜Win7安装盘,显现&quot;File not find /BOOT/CDMENU.EZB.ezb&quot;错误
查看>>
SSH深度历险记(八) 剖析SSH核心原则+Spring依赖注入的三种方式
查看>>
iOS富文本组件的实现—DTCoreText源码解析 数据篇
查看>>
java中注解的使用与实例(一)
查看>>