为什么用ajax发送post请求时,需要设置请求头类型为application⼀x-www-form-urlencoded

2025-03-15 07:32:32
推荐回答(2个)
回答1:

在通过POST方式向服务器发送AJAX请求时最好要通过设置请求头来指定为application/x-www-form-urlencoded编码类型。知道通过表单上传文件时必须指定编码类型为"multipart/form-data"。ajax.setRequestHeader("content-type","application/x-www-form-urlencoded")表示将请求中的内容,按照UTF-8的方式进行编码,只针对POST请求有效,设置此内容是为了确保服务器知道实体中有参数变量,注意: 请求体格式和请求头的Content-Type类型必须保持一致,如果1的格式,设置Content-Type是application/json,或者2的格式,设置Content-Type是application/x-www-form-urlencoded,后台接收到的请求提都会是空的

回答2:

发送post请求的方法如下面所示:

var XMLHttpReq;

//创建XMLHttpRequest对象

function createXMLHttpRequest() {if(window.XMLHttpRequest) { //Mozilla 浏览

XMLHttpReq = new XMLHttpRequest();}

else if (window.ActiveXObject) { // IE浏览器

try {XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");

} catch (e) {try {XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");

} catch (e) {}

//发送请求函

function sendRequest(url,para) {

createXMLHttpRequest();

XMLHttpReq.open("POST", url,true);

XMLHttpReq.onreadystatechange = processResponse;//指定响应函数

XMLHttpReq.setRequestHeader("Content-Type", "application/x-www-form-

urlencoded");

XMLHttpReq.send(para);  // 发送请求

}
// 处理返回信息函数

function processResponse() {

if (XMLHttpReq.readyState == 4) { // 判断对象状态

if (XMLHttpReq.status == 200) { // 信息已经成功返回,开始处理信息

var res=XMLHttpReq.responseText;

window.alert(res);

} else { //页面不正常

window.alert("您所请求的页面有异常。");

注意:用ajax发送post需要设置请求头类型为application/x-www-form-urlencoded。