我已经为注册表单编写了php代码。它的工作没有Ajax调用。但是当我使用Ajax调用来检查重复的用户名时,它不会被调用。
HTML:
<form action="#" method="POST" class="LoginForm">
First Name: <input type="text" placeholder="First Name" required name="s_f_n" class="user_input" />
Last Name: <input type="text" placeholder="Last Name" required name="s_l_n" class="user_input" />
Email:<input type="email" placeholder="Email" required name="s_u_id" class="user_input" />
Username: <input type="text" placeholder="Username" required name="s_u_n" class="user_input" />
Password:<input type="password" placeholder="Password" required name="s_u_p" class="user_input" />
<input type="submit" value="Sign Up" formvalidate name="signup" class="inSub" id="su"/>
</form>
的Ajax:
$(document).ready(function(){
$('#su').click(function(){
$.ajax({
type: 'post',
url: 'ajax.php',
data: {'ajax': true},
success: function(){
window.alert("success");
}
});
});
});
ajax.php:
if(isset($_POST['ajax']) && ($_POST['ajax']) == true){
$conn = mysql_connect('localhost', 'root', '');
if(!$conn){
die(mysql_error());
} else {
mysql_select_db('users');
$fname = mysql_real_escape_string($_POST['s_f_n']);
$lname = mysql_escape_string($_POST['s_l_n']);
$em = mysql_real_escape_string($_POST['s_u_id']);
$uname = mysql_real_escape_string($_POST['s_u_n']);
$p = md5($_POST['s_u_p']);
$sql_query = "SELECT * FROM `udata` WHERE username_user = '$uname'";
$result = mysql_query($sql_query);
if(mysql_num_rows($result) > 0){
//trying to see if this part works
header("Location: https://www.google.com");
mysql_close();
} else {
$sql_query = "INSERT INTO `users`.`udata` (firstname, lastname, email_id, username_user, pd) VALUES ('$fname', '$lname', '$em', '$uname', '$p')";
$sub_query_ret_val = mysql_query($sql_query, $conn);
if(!$sub_query_ret_val){
die(mysql_error());
}
mysql_close();
}
}
}
Ajax.php既不检查重复,也不将数据输入mysql数据库
答案:@ jQuery.PHP.Magento.com
data:$(".LoginForm").serialize()
工作得很好。
答案 0 :(得分:1)
如果没有preventDefault(),每次单击“提交”按钮时都可以重新加载页面。尝试包括preventDefault(),如下所示。
$(document).ready(function(){
$('#su').click(function(e){
e.preventDefault();
$.ajax({
type: 'post',
url: 'ajax.php',
data: {'ajax': true},
success: function(){
window.alert("success");
}
});
});
});
答案 1 :(得分:1)
只需使用输入按钮
<input type="button" value="Sign Up" formvalidate name="signup" class="inSub" id="su"/>
现在表单不会重新加载用于在代码中重新加载的页面。
修改强>
$("form").serialize();
用于自动形成Key:Value对输入。因此,如果您的表单有100个字段,而不是做出可怕的data:{'field1':$("#field1Input").val(),..........'field1':$("#field100Input").val()}
。 serialize()
方法将key:value,key2:value2
对中的表单数据序列化。