2013-08-01 45 views
0

jQuery的文件AJAX驗證工作不

$(document).ready(function() { 
     $('input.textinput3').each(function() { 

       $(this).rules("add", 
        { 
         required: true,      
         minlength: 3, 
         remote: "report/user_check.php", 

         messages: { 
          required: "Type Serial number!",        
          minlength: jQuery.format("Please, at least {0} character are necessary"), 
          remote: jQuery.format("{0} is already taken"), 
          // remote: 'This email address has already been used' 

         } 
        }) 
      }); 
// initialize the validator 
     $('form.warregform').validate();  

}); 

我的PHP文件

include("db.class1.php"); 

if (isset($_POST['wproserial'])) { 
    $db = new mysqldb(); 
    $db->select_db(); 

    for ($i=0;$i<count($_POST['wproserial']);$i++) { 
     {   
      $wproserial = $_POST['wproserial'][$i];    
     } 
    } 

    $query = "SELECT EXISTS (SELECT * FROM products WHERE SerailNo='mysql_real_escape_string($wproserial)')"; 

    if($db->num_rows($db->query($query)) < 1) { 
     return true; 
    }else { 
     return false; 
    } 
} 

我無法檢查與現有數據庫驗證,該序列號。已經註冊或沒有註冊。每個輸入數據都顯示消息「已被採用」。所以我不能提交。我的序列號輸入字段是無限的。

我的HTML文件

default show 
<input name="wproserial[]" id="wproserial0" type="text" value="" class="textinput3 " autocomplete="off"> 
After Add 
<input name="wproserial[]'+i+'" id="wproserial'+i+'" type="text" value="" class="textinput3"> 
+1

SELECT EXISTS總是會返回一行,你需要重新考慮查詢或如果 – Dale

+0

和查詢壞了,你不能有PHP函數'mysql_real_escape_String'在SQL中沒有逃脫它,它將直接作爲'SELECT ...'mysql_real_escape_String()'...' – Dale

+0

一如既往:不推薦使用'mysql_real_escape_string',否則整個mysql_ *'擴展名將被棄用,並且將被刪除。棄用程序已持續多年。 PHP的文檔頁面在函數頁面上有一個_big紅色警告框,告訴你不再使用這些函數。只是** RTFM ** –

回答

0

遠程驗證期待你的服務器端腳本返回JSON。你應該做到以下幾點,而不是僅僅返回truefalse

if($db->num_rows($db->query($query)) < 1) { 
    $valid = 'true'; 
} else { 
    $valid = 'false'; 
} 

echo json_encode($valid); 
+0

感謝您的回答!我嘗試但仍然不能... – user2612903

1

更改您的查詢

$query = "SELECT EXISTS (SELECT * FROM products WHERE SerailNo='mysql_real_escape_string($wproserial)')"; 

這個

$query = "SELECT * FROM products WHERE SerailNo='".mysql_real_escape_string($wproserial)."'"; 
+0

感謝您的回答!我嘗試過,但仍然不能... – user2612903

+0

在查詢結尾有一個流氓''',但除此之外,這是正確的解決方案。 – Sumurai8

+0

好啊斑點,謝謝並修復 – Dale

0

試試這個

$query = "SELECT EXISTS (SELECT * FROM products WHERE SerailNo='".mysql_real_escape_string($wproserial)."')"; 

代替

$query = "SELECT EXISTS (SELECT * FROM products WHERE SerailNo='mysql_real_escape_string($wproserial)')"; 
+0

感謝您的回答!我嘗試但仍然不能... – user2612903