利用ajax post请求的时候添加了ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");这行代码但是结果还是404
//步骤一:创建异步对象
var ajax = new XMLHttpRequest();
//步骤二:设置请求的类型及url,注意:post请求一定要添加请求头才行不然会报错
ajax.open("post", "users.json");
ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
//步骤三:发送请求
ajax.send();
//步骤四:注册事件 onreadystatechange 状态改变就会调用
ajax.onreadystatechange = function () {
//步骤五:如果能够进到这个判断,说明数据完美的回来了,并且请求的页面是存在的
if (ajax.readyState == 4 && ajax.status == 200) {
console.log(ajax.responseText);//输入响应的内容
}
};
这个问题可能是因为请求的URL地址不正确导致的。请确认请求的URL地址是否正确,或者是需要添加域名前缀。如果URL地址正确,可能是服务器端配置问题导致的404错误。建议将请求改为get方式并在浏览器或者postman中测试一下,看是否能够成功访问该URL地址。
404就是路径找不到 not found
回答:根据参考资料,POST请求的数据必须放在消息主体中,同时需要指定消息主体的编码方式,即Content-Type。如果服务端不能正确解析请求主体的格式,可能会出现404错误提示。
根据参考资料中的推荐,在使用原生js写ajax POST请求时,一定要注意加上setRequestHeader("Content-type","application/x-www-form-urlencoded");,这样才能正确指定消息主体编码方式,并使服务端能够正确解析请求。
以下是使用原生js发送ajax POST请求的示例代码:
function ajax(url, data) {
// 创建XMLHttpRequest对象
var xhr = new XMLHttpRequest();
// 指定请求方式和请求地址
xhr.open("POST", url, true);
// 指定消息主体的编码方式
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
// 设置响应类型为JSON
xhr.responseType = "json";
// 注册回调函数,获取响应结果
xhr.onreadystatechange = function() {
if (xhr.readyState === XMLHttpRequest.DONE) {
if (xhr.status === 200) {
console.log(xhr.response);
} else {
console.log(xhr.statusText);
}
}
}
// 发送请求
xhr.send(JSON.stringify(data));
}
在发送请求时需要指定请求地址和POST数据,例如:
ajax("http://example.com/api", {id: 1, name: "example"});
注意,POST数据需要转换为字符串格式发送,可以使用JSON.stringify()方法将数据转换为JSON字符串。