28

jQueryコードには次の関数があります。

btnLogin.on('click', function(e,errorMessage){
    console.log('my message' + errorMessage);
    e.preventDefault();

    return $.ajax({
        type: 'POST',
        url: 'loginCheck',
        data: $(formLogin).serialize(),
        dataType: 'json'  
    }).promise();
    console.log('my message' + errorMessage);
});

私がやろうとしていること:エラーメッセージをconsole.logにしようとしています。console.log行がajax関数の上にある場合は未定義になり、console.logがその下にある場合は何も表示されません。

この関数または別の新しい関数に表示されるerrorMessageの値を取得する方法を教えてもらえますか?

また、phpログインフォームをチェックするためにAjaxを使用することについてのリンクは深く感謝されます

よろしく、ゾラン

4

7 に答える 7

13

呼び出し内でエラーを処理しないのはなぜですか?

すなわち

$.ajax({
    type: 'POST',
    url: 'loginCheck',
    data: $(formLogin).serialize(),
    dataType: 'json',
    error: function(req, err){ console.log('my message' + err); }
});
于 2012-08-19T10:32:23.747 に答える
9

このようなものを試すことができます( jQuery Ajaxの例からコピー)

var request = $.ajax({
  url: "script.php",
  type: "POST",
  data: {id : menuId},
  dataType: "html"
});

request.done(function(msg) {
  console.log( msg );
});

request.fail(function(jqXHR, textStatus) {
  console.log( "Request failed: " + textStatus );
});

元のコードの問題は、on関数に渡すエラー引数が実際にはどこからも来ていないことです。JQuery onは2番目の引数を返しません。返されたとしても、Ajax呼び出しではなくクリックイベントに関連します。

于 2012-08-21T10:02:48.473 に答える
7
$.ajax({
    type: 'POST',
    url: 'loginCheck',
    data: $(formLogin).serialize(),    
    success: function(result){
        console.log('my message' + result);
    }
});
于 2013-07-10T07:18:55.933 に答える
1

呼び出し自体が失敗した場合、Ajax 呼び出しエラー ハンドラーがトリガーされます。

ログイン資格情報が通過しない場合に備えて、サーバーからエラーを取得しようとしている可能性があります。その場合、サーバー応答の json オブジェクトを調べて、適切なメッセージを表示する必要があります。

e.preventDefault();
$.ajax(
{
    type: 'POST',
    url: requestURI,
    data: $(formLogin).serialize(),
    dataType: 'json',
    success: function(result){
        if(result.hasError == true)
        {
            if(result.error_code == 'AUTH_FAILURE')
            {
                //wrong password
                console.log('Recieved authentication error');
                $('#login_errors_auth').fadeIn();
            }
            else
            {
                //generic error here
                $('#login_errors_unknown').fadeIn();
            }
        }
    }
});

ここで、「結果」はサーバーから返された json オブジェクトで、次のような構造を持つ可能性があります。

$return = array(
        'hasError' => !$validPassword,
        'error_code' => 'AUTH_FAILURE'
);
die(jsonEncode($return));
于 2012-08-19T12:49:11.730 に答える
-1

Chrome でコンソールを右クリックし、[ナビゲーションのログを保持する] をオンにします。

于 2014-03-16T04:20:01.057 に答える