これを解決するための提案をいただき、ありがとうございます。Javascriptでコマンドを連続して実行する
私はグループにデータベースに追加できるかどうかを確認するためにJS関数checkAvailability()を使用しています。 (何らかの理由で、データベースのキー制約が適用されませんでした) これを実行している間に、PHP関数の出力を受け取る前でも関数が返ることがあります。
私は混乱した結果を得ます。 PHPファイルからの出力を受け取ると、正しい結果が表示されます。しかし、それはちょうど偽を返す時代の残りの部分。
どのようにこの問題を解決するための指針ですか? コードは次のとおりです。問題は$.post
が送信するということです
function checkAvailability(){
var grpname = $('#groupname').val();
var isAvailable = false
//use ajax to run the check
$.post("checkGroupName.php", { gname: grpname },
function(result){
if(Number(result) == 0){
//show that the groupname is available
isAvailable = true ;
$('#username_availability_result').html(grpname + ' is Available');
}
else{
//show that the groupname is NOT available
isAvailable = false ;
$('#username_availability_result').html(grpname + ' is already taken');
}
});
alert("isAvailable : "+isAvailable);
return isAvailable ;
}
checkGroupName.phpが
$gname = $_POST['gname'];
$query = "SELECT * FROM groups WHERE group_name='$gname'";
$result = mysql_query($query);
if(mysql_num_rows($result)){
echo 1;
else
echo 0;
を試すことができます私は確かにあなたのアプリケーションにSQLインジェクション攻撃を実行することができることが大好き! –
結果を文字列として比較したいのですが? if(result == '0'){... – heximal
user:Re @ Delanさんのコメントは、あなたのコードで対処したいと思う本当の問題です。その他:http://en.wikipedia.org/wiki/Sql_injection –