我正在使用此代码将POST req发送到我的服务器。出于某种原因,单击该按钮会发送两个POST请求。第一个是/register/username/password
发送的。第二个发送到/register
。问题是第二个请求总是返回404。
我试图用postCount
条件解决它,但它仍然发送了两个请求
似乎在Windows或Android上使用chrome时它忽略了404它工作得很好。问题是当使用mac或iOS时它会抛出“无法发布/注册”(因为404)。
This is the link to the app in Heroku
双POST请求日志的示例:
2017-08-31T11:36:18.896946+00:00 app[web.1]: POST /register/O**R/pass 200 0.423 ms - 3
2017-08-31T11:36:18.939530+00:00 app[web.1]: POST / 404 0.770 ms - 140
需求代码:
var postCount = 0;
$("#rgstnBtn").click(function () {
var password = $("#password").val();
var username = $("#username").val();
if(postCount === 0) {
if (username && password) {
$.post("/register/" + username + "/" + password, function (data) {
postCount++;
// console.log("hi");
var status = data;
if (data === '500') {
location.reload();
alert("username already exists");
} else {
window.parent.location = "/item"
}
});
} else {
refresh();
alert('please insert valid user name and password');
}
}
function refresh() {
setTimeout(function () {
location.reload()
}, 10);
}
});
答案 0 :(得分:1)
我遇到了类似的问题。虽然看起来没什么必要,但我发现使用.preventDefault()
就可以了。
答案 1 :(得分:0)
好的,我仍然不知道双重POST的原因是什么,但是,我使用了这个操作,问题解决了:
$("#rgstnBtn").attr('disabled', 'disabled');
感谢大家