0

ユーザーが提供したキーを検証するこの ajax 関数があります。ただし、アラートはajax応答の前に発生するため、ユーザーが間違ったキーを提供した場合でもアクセスできます

$(document).ready(function() {
    $('#submit').click(function(e) {
        e.preventDefault();
        var key = $('#downloadkey').val();
        var dataString = {KEY:key};
        $.ajax({
            url: "/mediabox/home/validate_key",
            type: 'POST',
            data: dataString,

            success: function(msg) {
                if(msg=="true") 
                {
                   alert("do something");
                }
                else
                {
                   alert("Your download key is either wrong or you didn't provide it.");
                   return false;
                }                        

            }
        });

    });
});

ここに画像の説明を入力

4

2 に答える 2

0

応答の前にアラートが来ると信じる理由は何ですか? 成功ハンドラーは、クライアント側で応答が正常に受信された後にのみ呼び出されます。

確認するには、成功ハンドラーを編集して応答をログに記録します。

success: function(msg) {
   console.log(msg);
   if(msg=="true") 
   {
      alert("do something");
   }
   else
   {
       alert("Your download key is either wrong or you didn't provide it.");
       return false;
   }                        
}

また、return falseHTML アクションをブロックしてユーザーへのアクセスを拒否するために を使用している場合、AJAX の非同期性のために動作しません。

于 2012-08-06T15:21:09.887 に答える
0

リクエストが完了すると、成功関数が呼び出されます。

成功(データ、テキストステータス、jqXHR)関数、配列

リクエストが成功した場合に呼び出される関数。この関数には 3 つの引数が渡されます。dataType パラメータに従ってフォーマットされた、サーバーから返されたデータ。ステータスを説明する文字列。jqXHR (jQuery 1.4.x では XMLHttpRequest) オブジェクト。jQuery 1.5 の時点で、success 設定は関数の配列を受け入れることができます。各関数が順番に呼び出されます。これは Ajax イベントです。

成功ハンドラー内のコードは、AJAX 要求が完了すると実行されます。事前にアラートを受け取っている場合は、リクエストが適切に完了したことを示しています。

于 2012-08-06T15:21:28.030 に答える