angular中的post请求处理示例详解
程序员文章站
2022-03-07 09:40:07
前言项目angular中使用jquery请求,想替换为angular自身请求,结果发现后台没法获取參数,所以,查询资料分析一下,做个总结。步骤如下:首先,angular和jquery中请求是不同的。如...
前言
项目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请求处理内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
上一篇: 前端基础之CSS_2
推荐阅读
-
RxJava和Retrofit2的统一处理单个请求示例详解
-
详解AngularJS中$http缓存以及处理多个$http请求的方法
-
Angular.js中处理页面闪烁的方法详解
-
asp.net core webapi处理Post请求中的request payload
-
linux shell中curl 发送post请求json格式问题的处理方法
-
SpringMVC中如何解决POST请求中文乱码问题GET的又如何处理
-
angular中的post请求处理示例详解
-
ajax异步处理POST表单中的数据示例代码
-
jQuery中ajax和post处理json的不同示例对比
-
vue中axios处理http发送请求的示例(Post和get)