加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

关于angularjs中$http POST请求参数的问题

发布时间:2020-12-17 10:03:52 所属栏目:安全 来源:网络整理
导读:本人angularjs小白,今天遇到这样一个问题。 在angularjs中发出这样一个POST请求 $http({ method: "POST",url: "",params: id }).success(); 在调试中发现,参数在url上出现了,就是以 ?id=123124 的形式出现,跟GET请求变成一样的了,然后查了一下发现参数

本人angularjs小白,今天遇到这样一个问题。

在angularjs中发出这样一个POST请求

$http({
            method: "POST",url: "",params: id
        }).success();

在调试中发现,参数在url上出现了,就是以?id=123124的形式出现,跟GET请求变成一样的了,然后查了一下发现参数的写法『用GET的时候就是params,用POST/PUT/PATCH/DELETE就是data』,修改后

$http({
            method: "POST",data: id
        }).success();

发现发送的参数出现在了request payload里,并且还在一个大括号内(这能算是个对象吗?),后端无法获取参数

于是查询了『angularjs中$http模块POST请求request payload转form data』http://www.360doc.com/content/15/0521/12/203871_472172841.shtml,POST表单请求提交时,使用的Content-Type是application/x-www-form-urlencoded,而使用原生AJAX的POST请求如果不指定请求头RequestHeader,默认使用的Content-Type是text/plain;charset=UTF-8。修改为

$http({
            method: "POST",data: id,headers: { 'Content-Type': 'application/x-www-form-urlencoded' },transformRequest: function(obj) {
                var str = [];
                for (var p in obj) {
                    str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
                }
                return str.join("&");
            }
        }).success();
然后就可以了。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读