1

スクリプトの私のウェブサイトのサインアップは以下のとおりです。top.location.href = '/';ユーザーがサインアップをクリックすると、AJAX を介してすべてのデータが別のページに送信され、成功した場合はページが変更されるはずですが、関数を呼び出すとすぐにページが代わりにホームページにリロードされるようですAJAX 呼び出しの成功を待機します。

私は何を間違っていますか?どうすれば修正できますか?

<script>
    $("#button").click(function() { 
        username = $('#loginNames').val();
        password = $('#passwords').val();
        email = $('#email').val();
        q = $('#q').val();
        a = $('#a').val();
        name = $('#i7').val();
        jQuery.ajax({
            type: "POST",
            url: "signupprocess.php",
            data: {'username':username, 'password': password, 'email': email, 'q':q, 'a':a, 'name': name},
            cache: false,
            success: function(response) {
                if(response === up) {
                top.location.href = '/';
                } else {
                    $('#response').html(response);
                }
            }
        });
        return false;
    });
</script>
4

1 に答える 1

3

あなたのコードには 2 つの問題があります。

第1の問題

が必要です。関数preventDefault()の任意の場所に追加するだけですclick()

そう:

$("#button").click(function(){  

なるはず

$("#button").click(function(e){  
    e.preventDefault();

メソッドのドキュメントから:

このメソッドが呼び出された場合、イベントのデフォルト アクションはトリガーされません。- event.preventDefault()

したがって、あなたの場合、追加しない限り、コードはデフォルトのボタンの動作をキャンセルしませんpreventDefault()


2番目の問題(ただし、答えではありません)

clickボタンでは使用しないでくださいsubmit。フォームで使用する必要があります。このようにして、トリガーイベントが何であれフォーム送信をキャッチし、ユーザーはEnterキーを押してフォームを送信できます。私はいつもそれを行います。あなたも何をしますか。

于 2013-08-24T18:36:00.603 に答える