最近在使用 jQuery 的 Ajax 发起 Post 请求时,遇到了乱码的问题。
具体表现是,当在请求体中设置了中文参数时,服务器端接收到的参数变成了一堆乱码。例如,发送的请求体是:
name=张三&age=18
在服务器端接收到的就变成了:
name=%D5%C5%BD%AD&age=18
经过调试发现,这是由于发送的请求体是以表单形式提交的,而表单默认使用的是 ISO-8859-1 编码格式。而服务器端使用的是 UTF-8 编码格式,所以在接收参数时就出现了乱码。
解决这个问题的方法比较简单,只需要设置请求头中的 Content-Type,让其使用 UTF-8 编码格式即可。
$.ajax({ url: "/api/xxx", type: "POST", data: { name: "张三", age: 18 }, contentType: "application/x-www-form-urlencoded;charset=utf-8", success: function(res) { console.log(res); } });
这样就可以顺利地接收到服务器端传回的正确数据。
总之,在使用 jQuery Ajax 进行 Post 请求时,一定要注意编码格式的问题,避免造成不必要的乱码。