Javascript 如何在提交表单之前检查唯一用户名

Javascript 如何在提交表单之前检查唯一用户名,javascript,ruby-on-rails,ajax,Javascript,Ruby On Rails,Ajax,我已经试了几个小时了。我想检查用户名是否已经存在于数据库中。如果有,请提醒并不要提交。如果没有,请提交。这是我的密码 $(function() { $("#new_user").on("submit", function() { var anyFieldIsEmpty = $('.newuser_input').filter(function() { return $.trim(this.value).length == 0; }).length > 0;

我已经试了几个小时了。我想检查用户名是否已经存在于数据库中。如果有,请提醒并不要提交。如果没有,请提交。这是我的密码

$(function() {
$("#new_user").on("submit", function() {
    var anyFieldIsEmpty = $('.newuser_input').filter(function() {
        return $.trim(this.value).length == 0;
    }).length > 0;
    if (anyFieldIsEmpty) {
        alert("There are empty fields!");
        return false;
    }
    else {
        check_curr_username();
        return false;
    }
});
});


function check_curr_username() {
var username = $("#user_username").val();
$.ajax({
    "url": "/checkusername",
    "data": {"name":username},
    "type": "get",
    "dataType": "json",
    "success": function(data) {
        alert('Username'+' '+data.username +' '+'is already taken' );
        $("#user_username").focus();
        return false;
    },
    "error": function() {
        $("#new_user").submit();
        return true;
    }
});
}
这是一个Rails表单。只有当用户名已经存在时,代码才起作用。但是如果没有,那么表单就不会提交。

我们需要checkusername页面,但我认为表单不会提交,因为没有触发错误(即:没有发生错误)。
checkusername页面应返回一个特定值。如果用户名尚未使用,则您可以处理表单。

这就是我检查唯一用户名的方式。我可能会被否决,因为这不是Rails,而是PHP

    <style>.nodisplay{display: none;}</style>

    <form id="usersigningup" name="usersigningup" method="post" action="">
    <input type='text' name='name' id='nose' pattern='[A-Za-z0-9_]{5,20}' required>
    <input type='text' name='password' id='password' pattern='[A-Za-z0-9_]{5,20}' required>
    <input class="nodisplay" type="submit" id="usersignup" name="usersignup" value="Go!"></form><br>
    <span id='response'></span>
接下来,我使用mysqli查询

    <?php include ('connect.php'); if( isset($_POST['ajax']) && isset($_POST['name']) ){
    $un = $_POST['name'];
    $sql51 = mysqli_query($conn, "SELECT username FROM mysite Where username = '$un'");
    if (mysqli_num_rows($sql51) > 0) {
    echo "<font color='red'>Sorry <b><i>" . $un . "</i></b> has been taken</font><script>document.getElementById('usersignup').style.display='none';</script>";
    } else {
    echo "<font color='green'><b>The Username <i>" . $un . "</i> is available</b></font><script>document.getElementById('usersignup').style.display='block';</script>";}
    exit;}?>

您的问题是什么?您是否遇到了错误?只有当用户已经存在时,它才起作用。但是如果没有,那么表单就不会提交。你能显示
checkusername
相关的操作和视图吗?我明白了。我没有注意到每次击键,因为我没有发送太多的服务器请求。
    <?php include ('connect.php'); if( isset($_POST['ajax']) && isset($_POST['name']) ){
    $un = $_POST['name'];
    $sql51 = mysqli_query($conn, "SELECT username FROM mysite Where username = '$un'");
    if (mysqli_num_rows($sql51) > 0) {
    echo "<font color='red'>Sorry <b><i>" . $un . "</i></b> has been taken</font><script>document.getElementById('usersignup').style.display='none';</script>";
    } else {
    echo "<font color='green'><b>The Username <i>" . $un . "</i> is available</b></font><script>document.getElementById('usersignup').style.display='block';</script>";}
    exit;}?>