我已经创建了一个ClickListener
,它应该向我的服务器发出一个POST
请求。在大多数情况下,都会发出POST请求,但有时无论我尝试多少次,都无法发出POST
请求。谁能帮助我了解问题所在以及如何解决?这是我要处理的代码:
$("#Button11").on("click", function() {
var xhr = new XMLHttpRequest();
xhr.open("POST", "/addtolist", true);
xhr.setRequestHeader(
"Content-type",
"application/x-www-form-urlencoded",
"Access-Control-Allow-Origin",
"*"
);
var parameter = "dc=deal1";
xhr.send(parameter);
window.location.href = "/final_page.ejs";
});
答案 0 :(得分:2)
XMLHttpRequest.send()
是一种异步方法,这意味着该方法仅要求发送请求,但不会立即完成。在大多数情况下,这无关紧要,但是在您的脚本中,您紧随其后重定向用户,因此,有时,在发送请求之前,已对用户进行了重定向。
在重定向用户之前,您必须等待请求完成,值得庆幸的是,XMLHttpRequest
拥有实现该请求的方法。这是XMLHttpRequest.onload()
方法。因此,您可以将脚本更新为:
$("#Button11").on("click", function() {
var xhr = new XMLHttpRequest();
xhr.open("POST", "/addtolist", true);
xhr.setRequestHeader(
"Content-type",
"application/x-www-form-urlencoded",
"Access-Control-Allow-Origin",
"*"
);
var parameter = "dc=deal1";
xhr.send(parameter);
xhr.onload = function(){
window.location.href = "/final_page.ejs";
};
});
如评论中所述,JQuery还具有用于提出请求的集成解决方案,我建议您阅读documentation以获得更好的解决方案。
答案 1 :(得分:-1)
您的位置更改正在杀死您的Ajax,
为什么现在不拥有更简单的$ .post呢?
您不需要任何标题,甚至甚至都不允许设置auth标题
void test::reset() {
// Create a default constructed instance of `test`
// and assign it to `*this`
*this = {};
};