如何使我的jQuery数据库ajax​​请求更加高效和灵活?

时间:2012-02-16 19:18:53

标签: jquery ajax database

我有一个jQuery ajax数据库查询,我想知道如何让它更灵活,或者如果有人能够对更好的方法有所了解,因为我刚开始学习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);      
      }
  })

}

因此,这会从名为“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和其他人的方法的提示似乎更混乱和混乱的代码。我在这里做错了吗?

谢谢大家!

1 个答案:

答案 0 :(得分:2)

首先应计算行数,因为如果查询返回零行,则获取数组将引发错误。如您所见,您不止一次地获取结果数组。没必要那样做。在获取结果数组之前存储它,并在以后使用它进行比较。 关于你的ajax,在jQuery中使用cache:true来加速。