<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>js使用AXAJ用POST方法将中文转URL码发送(主要是为了兼容gb2312)问题</title>
</head>
<body>
<script>
function ZAxajPost(PostUrl, PostCanShu, ShuChuID) {
var xhr = new XMLHttpRequest();
xhr.open("POST", PostUrl, true);
xhr.responseType = "arraybuffer"; // 设置响应数据的类型为 arraybuffer
xhr.onload = function() {
if (xhr.status >= 200 && xhr.status < 400) {
var responseData = new TextDecoder("gb2312").decode(xhr.response); // 将响应数据从 GB2312 编码转换为 UTF-8 编码
if (ShuChuID != '') {
document.getElementById(ShuChuID).innerHTML = responseData;
}
} else {
document.getElementById(ShuChuID).innerHTML = "请求出错,错误码:" + xhr.responseText;
}
};
xhr.onerror = function() {
document.getElementById(ShuChuID).innerHTML = "请求出错,无法连接到服务器";
};
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=GB2312");
var PostCanShuFG= PostCanShu.split("&");// 将URL参数字符串分割成键值对数组
xhr.send(encodeURIComponent(PostCanShu));//转成URL码,主要是为了兼容GB2312编码
}
</script>
<div id="shuchu"></div>
<a onclick="ZAxajPost('2.asp','a:你好,b:你不好','shuchu')">测试</a>
</body>
</html>
因为JS没法直接传输gb2312,所以只能采取这种笨办法,把数据转成URL码,然后再到后端还原,主要是为了兼容一些gb2312的应用。