post请求中的序列化

1.application/x-www-form-urlencoded
    序列化:encode
    GET方式,会将表单中的数据(键值对)经过urlencode编码后追加到url中。
    POST方式,会将表单中的数据经过urlencode编码后放在request body 中。
ajax 之POST请求,参数序列化
比如,我们在没有使用jquery的时候,没有$.post来让我们使用,那我们像下面这样直接发送:

var params1 = {
        username: username,
        passwrod: password
    };
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
    if (xhr.readyState == 4 && xhr.status == 200) {
        var data = xhr.responseText;
        data = JSON.prase(data);
    console.log(data);
    }
}
xhr.open("POST","/url",true);
xhr.setRequestHeader('Content-Type', 'multipart/x-www-form-urlencoded; charset=UTF-8');
xhr.send(params1);
这样发送,后台是接受不到数据的,,因为数据藏在Request的body中,而不是表单中,
所以我们前端就要对数据进行序列化,像jquery一样,$.params 一样对json序列化,这样后台就可以收到了

就像这样:

var params1 = {
        username: username,
        passwrod: password
    };
function $params(obj) {
    var str = [];
    for (var p in obj) {
        str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
    }
    return str.join("&");
}
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
    if (xhr.readyState == 4 && xhr.status == 200) {
        var data = xhr.responseText;
        data = JSON.prase(data);
    console.log(data);

    }
}
xhr.open("POST","/url",true);
xhr.setRequestHeader('Content-Type', 'multipart/x-www-form-urlencoded; charset=UTF-8');
xhr.send($params(params1));
复制代码

转载于:https://juejin.im/post/5cdbf4316fb9a03240191cd9

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值