angular中的post请求处理示例详解
- 作者: 命中助腚
- 来源: 51数据库
- 2021-07-03
前言
项目angular中使用jquery请求,想替换为angular自身请求,结果发现后台没法获取參数,所以,查询资料分析一下,做个总结。
步骤如下:
首先,angular和jquery中请求是不同的。如下:
- jquery:
请求contenttype是:
application/x-www-form-urlencoded; charset=utf-8
该类型数据被编码成以 '&' 分隔的键-值对, 同时以 '=' 分隔键和值. 非字母或数字的字符会被百分比编码: 这也就是为什么这种类型不支持二进制数据(应使用 multipart/form-data 代替)。
data参数是处理过的:
// json对象
{ a : 3, b : 2 }
// 将json对象处理为
"a=3&b=2"
- angular:
请求contenttype:
application/json
data参数:
// json对象
{a: 3,c: 2}
综上来看,angular提交后台是json,不是表单数据。我们需要把json对象转换为参数拼接,提交后台时就是表单数据了:
/**
* 将application/json转换为application/x-www-form-urlencoded
* @param data
*/
handlerpostparams(data) {
const params = [];
for (const key in data) {
if (data[key] && !isnull(data[key])) {
if (data[key] instanceof array) {
for (let i = 0; i < data[key].length; i++) {
if (data[key][i] && !isnull(data[key][i])) {
const value = data[key][i];
const name = key + '[' + i + ']';
const innerobj = {};
innerobj[name] = value;
params.push(this.handlerpostparams(innerobj));
}
}
} else if (data[key] instanceof object) {
for (const k in data[key]) {
if (data[key][k] && !isnull(data[key][k])) {
const value = data[key][k];
const name = key + '[' + k + ']';
const innerobj = {};
innerobj[name] = value;
params.push(this.handlerpostparams(innerobj));
}
}
} else {
const param = encodeuricomponent(key) + '=' + encodeuricomponent(data[key]);
params.push(param);
}
}
}
return params.join('&');
}
总结
到此这篇关于angular中post请求处理的文章就介绍到这了,更多相关angular post请求处理内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
推荐阅读
热点文章
Angular中响应式表单的三种更新值方法详析
7
Angularjs实现下拉框联动的示例代码
7
详解AngularJS跨页面传值(ui-router)
2
详解AngularJS1.x学习directive 中‘& ’‘=’ ‘@’符号的区别使用
3
angular2路由切换改变页面title的示例代码
4
Angular2 组件间通过@Input @Output通讯示例
5
Angularjs中ng-repeat的简单实例
3
AngularJS 中ui-view传参的实例详解
4
浅谈Angular路由守卫
4
详解基于Angular4+ server render(服务端渲染)开发教程
4
