应用程序发送POST请求两次

时间:2017-08-31 11:53:18

标签: javascript android iphone node.js post

我正在使用此代码将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);
    }
});

2 个答案:

答案 0 :(得分:1)

我遇到了类似的问题。虽然看起来没什么必要,但我发现使用.preventDefault()就可以了。

答案 1 :(得分:0)

好的,我仍然不知道双重POST的原因是什么,但是,我使用了这个操作,问题解决了:

 $("#rgstnBtn").attr('disabled', 'disabled');

感谢大家