无论是GET请求还是POST请求,向服务器传递参数的时候,必须要对参数进行编码。这里的参数包括参数名和值,这样参数才能显示正确
乱码问题(浏览器使用utf-8、服务器使用其他编码,传输数据的时候,就会乱码)
比如,参数为shu ming=红&黑
参数名中有空格,需要编码值有中文,且有歧义,需要编码;
··实验代码···
// 1. 创建 xhr 对象
let xhr = new XMLHttpRequest();
// 2. 准备事件,获取服务器响应结果
xhr.onreadystatechange = function () {
let res = xhr.responseText;
console.log(res);
}
// 3. 设置请求方式和url地址
xhr.open('POST', 'http://www.liulongbin.top:3006/api/addbook');
// 4. 设置请求头
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
// 5. 调用send发送请求
let b = '红&黑'
let c = encodeURIComponent('book name')
xhr.send(`${c}= ${b}&author=yyy&publisher=ssss`);
··没有编码···
··使用js内置方法 encodeURIComponent编码后···
如果使用jquery 则不需要考虑编码问题 因为jquery内部已经转码了