0

login.php ファイルに ajax ポスト リクエストを書きました。これは、「正しくない」や「成功」などをエコーし​​ます。

失敗などもチェックして、そのエラーボックスにテキストを追加したいので、この関数の使い方がよくわかりません..

何か案が?

これが私の現在のコードです:

$('#submit').click( function() {
    $.ajax({
        url: 'login.php',
        type: 'post',
        dataType: 'json',
        data: $('form#loginForm').serialize(),
        beforeSend:function(){
            launchPreloader();
        },
        complete:function(){
            stopPreloader();
        },
        success: function(data) {
            window.href("chat.php");
        }
    });
});
4

3 に答える 3

3

jQuery $.ajax() ドキュメントから...

jQuery 1.5 の時点で $.ajax() によって返される jqXHR オブジェクトは、Promise インターフェイスを実装し、Promise のすべてのプロパティ、メソッド、および動作を提供します (詳細については、Deferred オブジェクトを参照してください)。これらのメソッドは、$.ajax() リクエストが終了したときに呼び出される 1 つ以上の関数引数を取ります。これにより、単一のリクエストに複数のコールバックを割り当てることができ、リクエストが完了した後にコールバックを割り当てることもできます。(リクエストがすでに完了している場合、コールバックはすぐに開始されます。) jqXHR オブジェクトの使用可能な Promise メソッドには次のものがあります。

jqXHR.done(関数(データ、textStatus、jqXHR) {}); 成功コールバック オプションの代替構造である .done() メソッドは、非推奨の jqXHR.success() メソッドを置き換えます。実装の詳細については、deferred.done() を参照してください。

jqXHR.fail(function(jqXHR, textStatus, errorThrown) {}); エラー コールバック オプションの代替構造である .fail() メソッドは、非推奨の .error() メソッドを置き換えます。実装の詳細については、deferred.fail() を参照してください。

あなたのコードを例として使用して.....

$('#submit').click( function() {
    $.ajax({
        url: 'login.php',
        type: 'post',
        dataType: 'json',
        data: $('form#loginForm').serialize(),
        beforeSend:function(){
            launchPreloader();
        },
        complete:function(){
            stopPreloader();
        },
        success: function(data) {
            window.href("chat.php");
        }
    }).done(function() {
        alert('Done!');
    }).fail(function() {
        alert('Fail!');
    });
});
于 2013-08-12T16:14:42.500 に答える
1

検出に失敗したと言うときは、悪いリクエストなどを意味していると思います... statusCode イベントを使用して、次のような 404 エラーや 500 内部サーバー エラーのようなものを検出できます。

statusCode: {
    404: function () {
        //console.log('Error: 404: Could not contact server.');
    },
    500: function () {
        //console.log('Error: 500: Server error occurred.');
    }
}

したがって、完全な ajax コードは次のようになります。

$('#submit').click( function() {
    $.ajax({
        url: 'login.php',
        type: 'post',
        dataType: 'json',
        data: $('form#loginForm').serialize(),
        statusCode: {
           404: function () {
               //do somethign with error 404
               alert('Error: 404: Could not contact server.');
           },
           500: function () {
               //do something with error 500
               alert('Error: 500: Server error occurred.');
           }
        },
        beforeSend:function(){
            launchPreloader();
        },
        complete:function(){
            stopPreloader();
        },
        success: function(data) {
            window.href("chat.php");
        }
    });
});

Jquery ajax ページには、「statuscode」プロパティの説明がありますhttp://api.jquery.com/jQuery.ajax/

于 2013-08-12T16:16:10.797 に答える