2017-01-01 36 views
0

大家好我正在使用jQuery驗證插件。它只是工作正常,但我的問題是如果有電子郵件存在數據庫。表單不應提交,直到他選擇另一個有效的電子郵件。如何解決這個問題呢。如何不使用jQuery驗證插件將數據提交到數據庫ajax​​

表格甚至提交已經退出數據庫的電子郵件。

這裏是形式與阿賈克斯

<form id="ajax_form" action="form_action.php"> 
<label for="name">Name :</label> 
    <input name="name" type="text" required /> 

    <label for="name">Email :</label> 
    <input name="email" type="email" required /> 
    <input type="submit" value="Submit" /> 
</form> 
    <p id="validemail"></p> 


$(function(){ 
    $("#ajax_form").validate({ 
     rules: { 
      email: { 
       required: true, 
       email: true, 
       remote: { 
        url: "check_email.php", 
        type: "post", 
        data: { 
         username: function() { 
          $("#validemail").html('This email already taken'); 
         } 
        } 
       } 
      } 
     } 
    }); 
}); 

這裏是我的檢查電子郵件退出或不check_email.php。

mysql_connect('localhost', 'root', ''); 
mysql_select_db('krk'); 
$query = mysql_query("SELECT ID FROM customers WHERE email = '{$email}' LIMIT 1"); 
if (mysql_num_rows($query)) { 
    return true; 
} 
else{ 
    return false; 
} 

表單不應該提交,直到他選擇另一個有效的電子郵件。如何解決這個問題呢。

表格甚至提交已經退出數據庫的電子郵件。 表單不應提交,直到他選擇另一個有效的電子郵件。如何解決這個問題呢。 表單甚至提交已經退出數據庫的電子郵件。 表單不應提交,直到他選擇另一個有效的電子郵件。如何解決這個問題呢。 表單甚至提交已經退出數據庫的電子郵件。

+0

您必須使用'json_encode()''echo',而不是'return',''true「或'」false「'。另外,'data'選項用於向服務器發送額外的數據,而不用於設置錯誤消息。請參閱文檔中的示例和鏈接的副本。 – Sparky

回答

0
<script> 
var emailValid = true; 
$(function(){ 
    $("#ajax_form").validate({ 
     rules: { 
     email: { 
      required: true, 
      email: true, 
      remote: { 
      url: "check_email.php", 
      type: "post", 
      data: { 
       username: function() { 
       $("#validemail").html('This email already taken'); 
       emailValid = false; 
       } 
      } 
      } 
     } 
     } 
    }); 
}); 
</script> 

然後只允許提交表單,如果emailValid ==真;

+0

'data'選項用於向服務器發送額外數據,不用於設置錯誤消息或其他任何內容。請參閱文檔中的示例。 – Sparky

0

PHP腳本正在返回錯誤的值。當查詢返回行時,它需要返回false,因爲這意味着電子郵件已被使用。另外,它應該回顯一個字符串,而不是返回一個值。

mysql_connect('localhost', 'root', ''); 
mysql_select_db('krk'); 
$query = mysql_query("SELECT ID FROM customers WHERE email = '{$email}' LIMIT 1"); 
if (mysql_num_rows($query)) { 
    echo 'false'; 
} 
else{ 
    echo 'true'; 
} 
+0

感謝您的幫助。我很好奇它是如何工作的。你能解釋我嗎 – whoami

+0

它就像其他任何AJAX或PHP腳本 - 客戶端只會得到你的回聲。 – Barmar

+0

儘管'「true」'起作用,在技術上,你應該只回應一個JSON編碼的字符串......'echo json_encode(「true」)'等等。你也可以回顯任何JSON編碼的字符串,它會觸發驗證錯誤,並且字符串變成驗證錯誤消息。 – Sparky

相關問題