0

私のサイトにはパスワード変更機能があり、成功または失敗のメッセージを表示する以外はすべて完了しています。だからここに私のhtmlがあります:

<form id="change_Pass" action="" method="post">
    //stuff
</form>
<fieldset id="response_field_pass" style="display:none;"><p style="color:black;"></p></fieldset>

そして私のjquery:

$('#change_Pass').submit(function() {
    if(pass_val.form()) { 
        $.ajax({
            type: "POST",
            url: "script.php", 
            complete: function(data) {
                $('#response_field_pass').show();
                $('#response_field_pass >p').text(data);
                if(data) alert("success");
                else alert("fail");
            }
        });
    }
    return false;
});

PHPスクリプトがエコーtrueするかfalse、成功すると、成功を示すアラートボックスが表示されます。これは素晴らしいことです。しかし、フィールドセットは表示されておらず、 の中にあるはずのテキストも表示されていません<p>。基本的にスキップするだけです:

$('#response_field_pass').show();
$('#response_field_pass >p').text(data);

そしてアラートに移ります。フィールドセットを非表示にしない理由はありますか?

4

1 に答える 1

1

あなたが言及した行をスキップするかどうかは疑問です。completeハンドラーの最初の引数はjqXHRオブジェクトであり、サーバーから受け取るデータではないため、ほとんどの場合、フィールドセット内の段落には表示するものがありません。この問題を解決するには、success代わりにハンドラを使用することをお勧めします:

$.ajax({
    type: "POST",
    url: "script.php",
    success: function(data) {
        // ...
    }
});

success関数の最初の引数はdata、サーバーから返されるものです。

error発生する可能性のあるリクエスト エラーを処理するには、 handlerを使用できます。jqXHRオブジェクト、発生したエラーのタイプを説明する文字列、およびオプションの例外オブジェクト (発生した場合) の3 つの引数を受け取ります。

于 2012-10-21T23:00:08.943 に答える