这是在ajax请求上向服务器发送数据的正确方法吗?
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
alert(response);
}
};
xhttp.open("GET", "https://myurl/", true);
xhttp.send(JSON.stringify("{ action: 'search', mode: question}"));
因为我收到此错误405 (Method Not Allowed - Action not found)
答案 0 :(得分:0)
不,有几个问题:
alert(response);
会失败,因为没有response
变量;你可能想要alert(xhttp.responseText)
。
您正在进行GET,但之后尝试发送POST正文。你不能这样做。 GET信息在URL中,而不是正文中。
您正在发送JSON(嗯,尝试),但未将其识别为JSON。
您将字符串传递给JSON.stringify
,通常您传递的是对象,而不是字符串,因为它的作用是转换内容到 JSON字符串。
假设您的意思是执行POST,并且您确实想要发送JSON(例如,服务器设置为从客户端接受JSON),那么最小的更改将是:
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
alert(xhttp.responseText); // 1
}
};
xhttp.open("POST", "https://myurl/", true); // 2
xhttp.setRequestHeader("Content-Type", "application/json"); // 3
xhttp.send(JSON.stringify({ action: 'search', mode: question})); // 4
请注意,我假设question
是范围内的变量。