我使用PHP和jQuery构建了一个带有ajax验证和页面重定向的基本表单。几天前这个工作正常。我回过头来,ajax似乎已停止工作了。目前,ajax只是检查测试变量并回显数据。它真的很烦我,因为它最初工作正常!看起来很奇怪,因为我无法发现任何明显的东西,希望一些新鲜的眼睛可以提供帮助。
ajax已经停止发送数据,所以我点击提交,ajax什么都没发送,所以我的if()什么都不做!我得到的表格值很好。尝试了基本的ajax和警报,似乎发生了一些奇怪的事情。
希望你能帮忙
<form id="registerform">
<ul id="form">
<li>
<label for="email">Email:</label><span class="fieldbox"><input type="text" id="email"/></span>
</li>
<li>
<label for="confirmemail">Confirm Email:</label><span class="fieldbox"><input type="text" id="confirmemail"/></span>
</li>
<li>
<label for="password">Password:</label> <span class="fieldbox"> <input type="password" id="password"/></span>
</li>
<li>
<label for="confirmpassword">Confirm Password:</label> <span class="fieldbox"> <input type="confirmpassword" id="confirmpassword"/></span>
</li>
<input type="submit" id="register" value="Sign me up!"/>
</ul>
</form>
<div id="errorbox"></div>
jQuery的:
$(document).ready(function(){
$("#register").click(function(){
var formvalues = [$("#email").val(), $("#confirmemail").val(), $("#password").val(), $("#confirmpassword").val() ];
var checklength = formvalues[2].length;
if(formvalues[0] == "" || formvalues[1] == ""){
$('#errorbox').fadeIn('slow');
$("#errorbox").html('<p class="errormsg">Please complete email fields.</p><div class="errormsgshodow"></div>');
$("#main").shake(3, 5, 600);
return false;//stop click function
}
if(formvalues[2] == "" || formvalues[3] == ""){
$('#errorbox').fadeIn('slow');
$("#errorbox").html('<p class="errormsg">Please complete password fields.</p><div class="errormsgshodow"></div>');
$("#main").shake(3, 5, 600);
return false;//stop click function
}
if(formvalues[0] != formvalues[1]){
$('#errorbox').fadeIn('slow');
$("#errorbox").html('<p class="errormsg">Password field do not match</p><div class="errormsgshodow"></div>');
$("#main").shake(3, 5, 600);
return false;//stop click function
}
if(formvalues[2] != formvalues[3]){
$('#errorbox').fadeIn('slow');
$("#errorbox").html('<p class="errormsg">Password field do not match</p><div class="errormsgshodow"></div>');
$("#main").shake(3, 5, 600);
return false;//stop click function
}
if(checklength < 6 || checklength > 6){
$('#errorbox').fadeIn('slow');
$("#errorbox").html('<p class="errormsg">Password is too long.</p><div class="errormsgshodow"></div>');
$("#main").shake(3, 5, 600);
return false;//stop click function
}
var datastring = 'email=' + formvalues[1] + '&password=' + formvalues[3];
$.ajax({
type: "POST",
url: "signup.php",
data: datastring,
success: function(data){
//see redirect script for stuff here
if(data != "error"){
window.location="http://localhost/creativetree/projectboard.php?id="+data;
}else{
$('#errorbox').fadeIn('slow');
$("#errorbox").html('<p class="errormsg">User account already exists with that email.</p><div class="errormsgshodow"></div>');;
}
}
});
});
});//jquery end
//shake functions by Amit Dhamu
jQuery.fn.shake = function(intShakes /*Amount of shakes*/, intDistance /*Shake distance*/, intDuration /*Time duration*/) {
this.each(function() {
$(this).css({position:"relative"});
for (var x=1; x<=intShakes; x++) {
$(this).animate({left:(intDistance*-1)}, (((intDuration/intShakes)/4)))
.animate({left:intDistance}, ((intDuration/intShakes)/2))
.animate({left:0}, (((intDuration/intShakes)/4)));
}
});
return this;
};
最小的PHP结果:
<?php
if(isset($_POST['email'])){
$email = $_POST['email'];
$password = $_POST['password'];
if($email == "test"){
echo $email;
}else{
echo 'error';
}
}
?>
答案 0 :(得分:1)
在没有看到您收到的错误的情况下很难分辨,但从我所看到的情况来看,您在成功验证后没有从您的功能中返回任何内容,因此您的表单也会正常提交。
您可以使用以下内容阻止表单提交:
$("#registerform").submit(function() {
return false;
});
但是也许从提交按钮单击处理程序返回false
就足够了。