在本地的http.request规定了post方法,但在chrome控制台显示的是get方法

在本地的http.request规定了post方法,但在chrome控制台显示的是get方法

最近测试一个小功能的时候,偶然遇到这个问题,在本地使用的jQuery.ajax,并定义了type: "post"

部分代码:

                $.ajax({
                    header: {
                        "Content-Type": "application/x-www-form-urlencoded"
                    },
                    type: "post",
                    url: url,
                    async: true,
                    data: {
                        access_token: access_token,
                        id_card_side: "front",
                        image: imageBase
                    },
                    dataType: "jsonp",
                    timeout: 30000,
                    success: function (data) {
                        console.log("解析成功");
                        console.log(data);
                    },
                    error: function (xhr) {
                        console.log("请求解析失败");
                    }
                });

 

但是在浏览器测试的时候,依然会变成get请求,找了很多帖子,最终找到原因:

*注:首先排除了请求路径错误的问题,如果你也遇到这种情况,先检查请求路径是否正确,结尾是否多/。

我这里出现这种情况的原因是因为定义了dataType: "jsonp",跨域请求,这样的话即使规定了type: "post",jQuery也会帮你变成get请求,具体原理可参考jQuery API中文文档

jQuery API中文文档上指出:在远程请求时(不在同一个域下),所有POST请求都将转为GET请求。因为将使用DOM的script标签来加载。

另外ajax函数写法在从jQuery 1.5.1开始版本之后就出现了新的ajax函数写法,建议使用新写法。

例如:

$.ajax({
  url: "http://fiddle.jshell.net/favicon.png",
  beforeSend: function ( xhr ) {
    xhr.overrideMimeType("text/plain; charset=x-user-defined");
  }
}).done(function ( data ) {
  if( console && console.log ) {
    console.log("Sample of data:", data.slice(0, 100));
  }
});

 

jqXHR.done(function(data, textStatus, jqXHR) {});
一个可供选择的 success 回调选项的构造函数,.done()方法取代了的过时的jqXHR.success()方法。

 

posted @ 2018-07-16 16:14 花生福 阅读( ...) 评论( ...) 编辑 收藏
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值