1

私は小さなプロジェクトを作成しており、現在は登録モジュールに取り組んでいます。.post入力されたデータが正しいかどうかを確認するページを呼び出すためにJqueryメソッドを使用しています。すべて正常に動作しますが、データが正しくない場合はメッセージが表示されますが、ユーザーも登録されます。jsコードは次のとおりです。

$("#name").keyup(function(){  
  $.post("check/user_check.php" , {  
    username: $("#name").val()  
   }, function(response)    {  
     $("#validateTips").fadeIn("slow");  
     $("#validateTips").html(response);  
   });  
});

そして、user_check.php は次のとおりです。

<?php
include "config.php";
$user = $_POST['username'];


$user_query = mysql_query("SELECT username FROM users WHERE username='$user'");


if(strlen($user) < 3)
{
    print "<span id='wrong'>username is too short</span>";
}

あまりにも長く、すでに取られた他のケースがありますが、私はあなたがポイントが何であるかを理解すると思います. それで問題は、user_check.php がそのユーザー名を間違って出力した場合、登録を防ぐために何をすべきかということです。

4

3 に答える 3

1

エラー メッセージが返されたら、実行を停止します。

if(strlen($user) < 3)
{
    print "<span id='wrong'>username is too short</span>";
    die(); //Stop right here
}
于 2013-11-09T16:38:40.737 に答える
0

さまざまな方法で解決できますが、まず、応答を HTML ではなく JSON として送信し、クライアント側で書式設定を処理することをお勧めします。

成功とエラーを区別する簡単な方法の 1 つは、サーバーに適切な HTTPステータス コードを設定することです。

つまり、サーバーに 4XX または 5XX コードを設定するだけで、jQuery ajax エラー/コールバック失敗になります。

コードは次のようになります。

$.post('check/user_check.php',{ username: $("#name").val() }).done(function(data)
    //handle success
}).fail(function(error){
    //handle failure
    console.log(error.responseText);
});

PHP コードでは、何か問題が発生したときにエラーを示すステータス コードを設定するだけです。

header('HTTP/1.1 400 Bad Request', true, 400);

または PHP >= 5.4 を使用している場合:

http_response_code(400);

このトピックに関するより詳細な回答をここに投稿しました。

于 2013-11-09T17:14:36.027 に答える
-1

jquery コード (php の場合は die() ) で off() を使用して実行を停止します off() のドキュメント: http://api.jquery.com/off/

于 2013-11-09T17:09:09.693 に答える