2014-01-22 51 views
3

這是我的j查詢代碼:控制檯顯示我爲測試添加的「更改」,如果該操作正在通過j查詢。我也手動通過參數運行valdiateUname.php,它返回正確的結果,但我的查詢不檢查用戶名。問題是什麼?誰能幫我?爲什麼我的ajax jquery檢查用戶名?

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script> 
<script type="text/javascript"> 
    jQuery(function ($) { 
     uname.change(function(){ 
      console.log('change'); 
      $.ajax({ 
       type: "POST", 
       data:{     // data that will be sent 
        uname: uname.val() 
       }, 
       url:"validateUname.php", 
       //dataType:"text",  // what type of data we'll get back 
       beforeSend: function(){ 
        if(!$ ('span.unameCheck').html()){ 
          $(this).after(' <span class="unameCheck" style="color:blue;"><b>Checking for the availability of username.....</span>'); 
         } 
        }, 
       success:function(data){ 
        if(data != 0) { 
         if(!$ ('span.unameError2').html()){ 
          $(this).after(' <span class="unameError2" style="color:red;"><b>Username already exist.</span>'); 
         } 
         return false; 
         //valid = true; 
        } 
        else { 
         $(this).toggleClass('unameError2', false); 
         $('span.unameError2').fadeOut().remove(); 
         return true; 
        } 
       } 

      }); 
     }); 
     }); 
</script> 

這是我validateUname.php代碼:

<?php 
require_once("config.php"); 
$username= isset($_POST["uname"]) ? $_POST["uname"] : $_GET["uname"]; 
$sql= "SELECT temp_user_login FROM temp_user_register WHERE temp_user_login = '$username' "; 
echo $sql; 
    $result = mysql_query($sql); 
     echo $result; 
     $msg = mysql_num_rows($result); 
     echo $msg; 
?> 
+0

你有沒有定義uname?在uname.change(function(){})之前的 。 – Shashank

+0

停止使用'mysql',它已被棄用。更不用說你很容易受到注射。 –

+0

我已經在文檔就緒功能之後和表單驗證功能之前定義了uname。完整的代碼太長,所以我剛剛發佈了@shashank – wingskush

回答

2

if(!$ ('span.unameError2').html())將永遠不會觸發因爲它不返回false,則返回''和你的條件語句不檢查這一點。

的證明是在jsFiddle

1

檢查unamedeclared使用它。

如果$(this)代表uname,則將$(this)代替爲uname

你應該echooncePHP否則你jquery function會經常去if部分只喜歡,

$result = mysql_query($sql); 
$msg=0; 
if($result){ 
    $msg = mysql_num_rows($result); 
} 
echo $msg; 

如果你不知道該requestPOSTGET然後代替使用$_REQUEST$_POST$_GET like,

$username = isset($_REQUEST["uname"]) ? $_REQUEST["uname"] : ''; 

還可以使用mysqli而不是mysql,因爲它是deprecated

0

因此,這爲我工作。我寫這樣可以幫助有同樣問題的人。已經有太多正確的答案,但有時候我們需要知道我們不應該做什麼。

uname.blur(function(){ 
     $.ajax({ 
      type: "POST", 
      data:{     // data that will be sent 
       uname: uname.val() 
      }, 
      url:"validateUname.php", 
      beforeSend: function(){ 
       $ ('span.unameError2').css("color","blue").html(" Checking for username availability...."); 
        $ ('span.unameError2').fadeIn('fast'); 
       }, 
      success:function(data){ 
       if(data != 0) { 
        $ ('span.unameError2').css("color","red").html("Username already exist."); 
        $ ('span.unameError2').fadeIn('fast'); 

       } 
       else { 
        $ ('span.unameError2').css("color","blue").html("Username available"); 
        $ ('span.unameError2').fadeOut(3000); 
       } 
      } 

     }); 
    });