Return false 不停止表单提交
Return false does not stop form submit
我正在尝试提交一个验证表单,然后在 PHP 中让用户登录。 I return false 当出现错误时,但它不会阻止表单提交。如何防止表单只有在出错时才提交?我在底部放了一个 return false
但这阻止了整个表单的提交,即使登录是好的。
login.js
$('#login_form').submit(function(e) {
if (validate({required: "email, password"}) == true) {
return attemptLogin();
} else {
return false;
}
});
function attemptLogin() {
var email = $("#email").val();
var password = $("#password").val();
var json = "JSON";
$.ajax({
url: "/login",
type: "POST",
data: {
email: email,
password: password,
json: json
},
success: function (data) {
data = JSON.parse(data);
if (data['message'] != 'undefined') {
if (data['message'] != 'success') {
$('#errors').html(data['message']);
return false;
}
}
}
});
}
和我的PHP
if ($validation === true) {
$user->findByEmail($_POST['email'], array('first_name', 'password', 'id'));
if (!$user->login($_POST['password'], $user->password, $user->id)) {
if (isset($_POST['json'])) {
echo json_encode(array('message' => 'Invalid email or password.'));
die;
} else {
$redirect->to('/login', '<div class="message message-error">Invalid email or password.</div>');
}
} else {
echo json_encode(array('message' => 'success'));
//die;
$redirect->to('/home', '<div class="message message-success">Hi ' . $user->first_name . ', you have been logged in!</div>');
}
return false 仅在 if 语句中。我想存储一个标志,您可以从成功函数(数据)中 return。试试这个,
success: function (data) {
data = JSON.parse(data);
var flag = true;
if (data['message'] != 'undefined') {
if (data['message'] != 'success') {
$('#errors').html(data['message']);
flag = false;
return flag;
}
}
return flag;
}
您可以使用 e.preventDefault()
- 它会阻止任何默认浏览器事件;
$('#login_form').submit(function(e) {
e.preventDefault();
if (validate({required: "email, password"}) == true) attemptLogin();
});
我正在尝试提交一个验证表单,然后在 PHP 中让用户登录。 I return false 当出现错误时,但它不会阻止表单提交。如何防止表单只有在出错时才提交?我在底部放了一个 return false
但这阻止了整个表单的提交,即使登录是好的。
login.js
$('#login_form').submit(function(e) {
if (validate({required: "email, password"}) == true) {
return attemptLogin();
} else {
return false;
}
});
function attemptLogin() {
var email = $("#email").val();
var password = $("#password").val();
var json = "JSON";
$.ajax({
url: "/login",
type: "POST",
data: {
email: email,
password: password,
json: json
},
success: function (data) {
data = JSON.parse(data);
if (data['message'] != 'undefined') {
if (data['message'] != 'success') {
$('#errors').html(data['message']);
return false;
}
}
}
});
}
和我的PHP
if ($validation === true) {
$user->findByEmail($_POST['email'], array('first_name', 'password', 'id'));
if (!$user->login($_POST['password'], $user->password, $user->id)) {
if (isset($_POST['json'])) {
echo json_encode(array('message' => 'Invalid email or password.'));
die;
} else {
$redirect->to('/login', '<div class="message message-error">Invalid email or password.</div>');
}
} else {
echo json_encode(array('message' => 'success'));
//die;
$redirect->to('/home', '<div class="message message-success">Hi ' . $user->first_name . ', you have been logged in!</div>');
}
return false 仅在 if 语句中。我想存储一个标志,您可以从成功函数(数据)中 return。试试这个,
success: function (data) {
data = JSON.parse(data);
var flag = true;
if (data['message'] != 'undefined') {
if (data['message'] != 'success') {
$('#errors').html(data['message']);
flag = false;
return flag;
}
}
return flag;
}
您可以使用 e.preventDefault()
- 它会阻止任何默认浏览器事件;
$('#login_form').submit(function(e) {
e.preventDefault();
if (validate({required: "email, password"}) == true) attemptLogin();
});