我有一个注册页面,我使用Ajax将数据发布到php页面。我有以下表格的验证:
firstname = $("#firstname").val();
if(firstname === '') {
$("#error").empty().append("Please enter a first name.");
$("#firstname").css("border-color", "#FF5454");
return false;
}我在Ajax文章中提交了变量,如下所示:
jQuery.ajax({
type: "POST",
url: "/includes/register_process.php",
data:'gender=' + gender + '&firstname=' + firstname + '&surname=' + surname
+ '&studentno=' + studentno + '&email=' + email + '&password=' + password
+ '&confirmpwd=' + confirmpwd,
etc etc.我想将上面的验证更改如下:
firstname = $("#firstname").val();
if(firstname === '') {
$("#error").empty().append("Please enter a first name.");
$("#firstname").css("border-color", "#FF5454");
return false;
} else {
$("#error").hide();
$("#firstname").css("border-color", "#4DC742");
return true;
}这似乎打破了Ajax帖子,因为它似乎没有将数据发布到php页面。
有人能给我一些提示吗?为什么这种变化会使Ajax的帖子不起作用呢?我是一个使用Ajax的初学者。
谢谢。
编辑1:
<script>
$(document).ready(function() {
$("#FormSubmit").click(function (event) {
event.preventDefault();
gender = $('#gender option:selected').val();
if (gender === 'null') {
$("#error").empty().append("Please select a gender.");
$("#gender").css("border-color", "#FF5454");
return false;
} else {
$("#error").hide();
$("#gender").css("border-color", "#4DC742");
return true;
}
firstname = $("#firstname").val();
if(firstname === '') {
$("#error").empty().append("Please enter a first name.");
$("#firstname").css("border-color", "#FF5454");
return false;
}
surname = $("#surname").val();
if(surname === '') {
$("#error").empty().append("Please enter a surname.");
$("#surname").css("border-color", "#FF5454");
return false;
}
studentno = $("#studentno").val();
if(studentno === '') {
$("#error").empty().append("Please enter a student number.");
$("#studentno").css("border-color", "#FF5454");
return false;
}
email = $("#email").val();
if(email === '') {
$("#error").empty().append("Please enter an e-mail address.");
$("#email").css("border-color", "#FF5454");
return false;
}
password = $("#password").val();
if(password === '') {
$("#error").empty().append("Please enter a password.");
$("#password").css("border-color", "#FF5454");
return false;
}
if (password.length < 6) {
$(".sad-feedback").empty().append("Passwords must be at least 6 characters long. Please try again.");
$("#password").css("border-color", "#FF5454");
return false;
}
confirmpwd = $("#confirmpwd").val();
if(confirmpwd === '') {
$("#error").empty().append("Please enter a password confirmation.");
$("#confirmpwd").css("border-color", "#FF5454");
return false;
}
if(password != confirmpwd) {
$(".sad-feedback").empty().append("Your password and confirmation do not match. Please try again.");
$("#password").css("border-color", "#FF5454");
$("#confirmpwd").css("border-color", "#FF5454");
return false;
}
jQuery.ajax({
type: "POST",
url: "/includes/register_process.php",
data:'gender=' + gender + '&firstname=' + firstname + '&surname=' + surname + '&studentno=' + studentno + '&email=' + email + '&password=' + password + '&confirmpwd=' + confirmpwd,
success:function(response){
$("#hide").hide();
$("#register-button").hide();
$("#FormSubmit").hide();
$("#error").hide();
$("#success").append('Thank you for your registration. You can now sign in to your account.');
$("#success-button").show();
},
error:function (xhr, ajaxOptions, thrownError){
$("#error").empty().append(thrownError);
}
});
});
});
</script>编辑2:
<script>
$(document).ready(function() {
$("#FormSubmit").click(function (e) {
e.preventDefault();
var hasError = false;
gender = $('#gender option:selected').val();
if (gender === 'null') {
$("#error").empty().append("Please select a gender.");
$("#gender").css("border-color", "#FF5454");
hasError = true;
} else {
$("#error").hide();
$("#gender").css("border-color", "#4DC742");
hasError = false;
}
firstname = $("#firstname").val();
if(firstname === '') {
$("#error").show();
$("#error").empty().append("Please enter a first name.");
$("#firstname").css("border-color", "#FF5454");
hasError = true;
} else {
$("#error").hide();
$("#firstname").css("border-color", "#4DC742");
hasError = false;
}
surname = $("#surname").val();
if(surname === '') {
$("#error").show();
$("#error").empty().append("Please enter a surname.");
$("#surname").css("border-color", "#FF5454");
hasError = true;
} else {
$("#error").hide();
$("#surname").css("border-color", "#4DC742");
hasError = false;
}
studentno = $("#studentno").val();
if(studentno === '') {
$("#error").show();
$("#error").empty().append("Please enter a student number.");
$("#studentno").css("border-color", "#FF5454");
hasError = true;
} else {
$("#error").hide();
$("#studentno").css("border-color", "#4DC742");
hasError = false;
}
email = $("#email").val();
if(email === '') {
$("#error").show();
$("#error").empty().append("Please enter an e-mail address.");
$("#email").css("border-color", "#FF5454");
hasError = true;
} else {
$("#error").hide();
$("#email").css("border-color", "#4DC742");
hasError = false;
}
password = $("#password").val();
if(password === '') {
$("#error").show();
$("#error").empty().append("Please enter a password.");
$("#password").css("border-color", "#FF5454");
hasError = true;
} else {
$("#error").hide();
$("#password").css("border-color", "#4DC742");
hasError = false;
}
if (password.length < 6) {
$("#error").show();
$(".sad-feedback").empty().append("Passwords must be at least 6 characters long. Please try again.");
$("#password").css("border-color", "#FF5454");
hasError = true;
} else {
$("#error").hide();
$("#password").css("border-color", "#4DC742");
hasError = false;
}
confirmpwd = $("#confirmpwd").val();
if(confirmpwd === '') {
$("#error").show();
$("#error").empty().append("Please enter a password confirmation.");
$("#confirmpwd").css("border-color", "#FF5454");
hasError = true;
} else {
$("#error").hide();
$("#confirmpwd").css("border-color", "#4DC742");
hasError = false;
}
if(password != confirmpwd) {
$("#error").show();
$(".sad-feedback").empty().append("Your password and confirmation do not match. Please try again.");
$("#password").css("border-color", "#FF5454");
$("#confirmpwd").css("border-color", "#FF5454");
hasError = true;
} else {
$("#error").hide();
$("#confirmpwd").css("border-color", "#4DC742");
hasError = false;
}
if(hasError == false){
jQuery.ajax({
type: "POST",
url: "http://test.student-portal.co.uk/includes/register_process.php",
data:'gender=' + gender + '&firstname=' + firstname + '&surname=' + surname + '&studentno=' + studentno + '&email=' + email + '&password=' + password + '&confirmpwd=' + confirmpwd,
success:function(response){
$("#hide").hide();
$("#register-button").hide();
$("#FormSubmit").hide();
$("#error").hide();
$("#success").append('Thank you for your registration. You can now sign in to your account.');
$("#success-button").show();
},
error:function (xhr, ajaxOptions, thrownError){
$("#error").show();
$("#error").empty().append(thrownError);
}
});
}
return true;
});
});
</script>发布于 2014-12-28 14:53:07
我认为这里的问题是,在第一次检查中,您正在从闭包返回。
event.preventDefault();
gender = $('#gender option:selected').val();
if (gender === 'null') {
$("#error").empty().append("Please select a gender.");
$("#gender").css("border-color", "#FF5454");
return false;// no need to return
} else {
$("#error").hide();
$("#gender").css("border-color", "#4DC742");
return true;// No need to return
}因此,ajax调用永远不会被调用。相反,您应该设置一个布尔值,可能称为hasError或其他什么,并根据您的验证设置它的值。然后在闭包的末尾进行ajax调用或不根据hasError的值进行调用
因此,请考虑这样做。
...
event.preventDefault();
var hasError = false;
$("#error").empty();// Empty out the errors container first
gender = $('#gender option:selected').val();
if (gender === null) {
$("#error").append("Please select a gender.<br/>");// Changes here remove the empty
$("#gender").css("border-color", "#FF5454");
hasError = true;
} else {
$("#gender").css("border-color", "#4DC742");
// EDIT : hasError = false; remove this line
} ..... // All the other validation然后在底部
if(hasError == false){
$("#error").hide();
// Make the ajax call
} else {
$("#error").show();
}
return true; // we handled the event希望这有帮助
发布于 2014-12-28 14:37:38
尝尝这个
$(document).on("submit", "form", function(event)//Try to set id of the form and use it #from_id instead of form
{
event.preventDefault();
//now call your ajax
jQuery.ajax({
type: "POST",
url: "/includes/register_process.php",
data:'gender=' + gender + '&firstname=' + firstname + '&surname=' + surname
+ '&studentno=' + studentno + '&email=' + email + '&password=' + password
+ '&confirmpwd=' + confirmpwd,
etc etc.
});https://stackoverflow.com/questions/27677295
复制相似问题