以下代码在Chrome中运行良好。此get的路由将reportOrder输出到终端。 (这不是最终目标,而只是用于测试以确保正确接收数据)。如果请求是在Chrome中进行的,则服务器会收到字符串化的JSON并将其打印到终端。如果请求是在Safari或Firefox中发出的,则服务器会返回404错误。
if(formready){
document.getElementById("invalidform").innerHTML = "";
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
};
console.log(this.status);
};
xhttp.open("GET", "/submit/"+JSON.stringify(reportOrder), true);
xhttp.send();
}
else{
document.getElementById("invalidform").innerHTML = "<p style='color: red'>Oops! Please correct all fields marked in red.</p>";
}
我已经阅读了一些关于ajax请求在不同浏览器中看起来很挑剔但却不明白为什么服务器会返回404的事情。
以防这是有用的路线:
app.get("/submit/:data", function(req, res){
var rawFormData = req.params.data;
var formData = JSON.parse(rawFormData);
console.log(formData);
});
答案 0 :(得分:0)
您需要获取请求网址的完整路径。
答案 1 :(得分:0)
要在GET URL中传递参数,最好使用参数格式进行序列化,例如使用jQuery.param(...)
(别名:$.param(...)
)。 OP提到&#34;当我使用jQuery.param时,GET请求在所有浏览器上都会通过。&#34;
要读取服务器端的参数,不必编写自定义解析器。 Express已经解析了它们并公开为req.query。
例如,如果将GET请求发送到URL /submit?a=42&b=88
,那么在服务器端req.query
中将是包含属性a
和b
的对象:
app.get('/submit', function(req, res) {
console.log(req.query); // { a: '42', b: '88' }
res.status(200).end();
});