1

ここにJQuerynoob、

サーバーに登録情報を送信する必要がある単純なWebアプリに取り組んでいます。何らかの理由で、このコードは、フォーム入力の2つだけが入力されている場合は正常に機能しますが、最後の1つに情報がある場合は、コードで使用していなくても失敗します。エラーコールバックが呼び出されますが、errorThrownは空です。サーバーがデータを受信しません。

これに明らかに何か問題がありますか?

注:フォームに入力がいくつあっても、最後の入力が入力されると呼び出しは失敗します。

JQuery:

$(document).ready(function() {
     $("#registrationForm button.register").on("click", function(event) {
        var params = {
            email: $("#registrationForm input.email").val(),
            password: $("#registrationForm input.password").val()
        };

        $.ajax({
        url: "/register",
        type: "POST",
        contentType: "application/json",
        data: JSON.stringify(params),
        dataType: "json",
        success: function(data, textStatus, jqXHR) {
            console.log(data);
            if(data.user_exists==true)
            {
                alert("Stop trying to register twice!");
            }else{
                window.location.href = "/registered";
            }
        },
        error: function(jqXHR, textStatus, errorThrown) {
            console.error("Error:", errorThrown);
        }
    });
  });
});

そしてHTML:

<form id="registrationForm">
    <label>Email:</label>
    <input name="user[email]" type="text" required="required" class="email">
    <br>
    <label>Password:</label>
    <input name="user[password]" type="password" required="required" class="password">
    <br>
    <label>Verify Password:</label>
    <input name="nothing" type="text" required="required">
    <br>
    <button onclick="" class="btn btn-default register">Register</button>
</form>
4

1 に答える 1

2

特に指定のない限り、フォーム内のボタンをクリックするとフォームが送信されます。click関数で、このデフォルトのアクションが実行されないようにするために配置しevent.preventDefault()ます。詳細については、こちらのjQueryドキュメントを参照してください

于 2013-03-10T04:39:38.327 に答える