私はjQuery ajaxデータベースクエリを持っています。私は多分それをより柔軟にする方法を考えています。もし誰かがより良いアプローチに光を当てることができたら、私はちょうどajaxを学び始めて少し助言が必要です。jQueryデータベースのajaxリクエストを効率的かつ柔軟にする方法を教えてください。
相続人は、私がこれまでしている:
<form method="post" name="sc_ajax" onsubmit="checkDB(document.sc_ajax.sc_voucher_code.value); return false;">
...
</form>
フォームがそのように設定されていることは、それは(同じページ)以下のAJAX機能を実行します提出:
function checkDB(code)
{
$.ajax({
type: "POST",
url: "<?php bloginfo('template_url'); ?>/profile/check_code.php",
data: 'code='+code,
datatype: "html",
success: function(result){
if(result == 0)
{
$('#success').html(code + ' already exists and has not been redeemed...');
// alert('success');//testing purposes
}
else if(result == 2)
{
$('#err').html( code + ' already exists and has already been redeemed....');
//alert('fail');//testing purposes
}else if(result == 1){
$('#err').html( code + ' redeem code doesnt exist');
}
alert(result);
}
})
}
だから、これはAからもたらされます「check_code.php」と呼ばれる別々のファイル:
$code = mysql_real_escape_string($_POST['code']);
$resultcode = mysql_query('select * from wp_scloyalty where code = "'. $code .'"') or die(mysql_error());
$redeemed=array();
while($info = mysql_fetch_array($resultcode))
{
$redeemed[$info["code"]] = $info["redeemed"];
}
if(mysql_num_rows($resultcode)>0 && $redeemed[$code] == 0){
//Exists so change redeemed code to 1
echo 0;
}elseif(mysql_num_rows($resultcode)>0 && $redeemed[$code] == 1){
//Exists but already redeemed, so throw error
echo 2;
}else{
//Doesnt Exist
echo 1;
}
コードが途中で完璧に動作します...しかし、私の質問です...私は現在、check_code.phpファイルから "if文"の束を実行していますが、これを行うためのよりよい方法は、Ajaxや他の人々のアプローチを使用する際のヒントを探しているので、はるかに混乱しているようですコードが詰まっています。私はここで何か間違っていますか?
ありがとう!
返信いただきありがとうございます。あなたが言うことは理にかなって...ちょうど私が結果アレイを何回取っているのか疑問に思っていますか?ループ中にフェッチ配列がなければ、後でif文の$ reememed [$ code]にクエリ結果を追加できません...そうですか? – JamesG
申し訳ありませんが、私は配列を取得しているわけではありませんでした。私はあなたがmysql_num_rowsに条件の2つの行数を返すよう要求していることを意味していました。それはmysqlの機能のため、mysqlサーバに連絡する必要があります。だから一度それを取得し、後でそれを使用してください。 – SachinGutte
ああ、私はあなたが笑を意味するかを参照してください。おかげで... ...変わった! – JamesG