[英]Why is this ajax call being made even though it shouldn't be
我有这个验证脚本即时通讯正在工作,但看不到为什么即时通讯有问题。
您可以看到我有一个check = false / true,请在运行ajax调用之前进行检查。
但是,即使一个字段为空并且check设置为false,它仍在运行该调用。
所以:
// JavaScript - Update Password AJAX
$(document).ready(function () {
// When the form is submitted
$('.updatepasswordform').submit(function () {
var check = true;
// Get the values
var password1 = $("input[name=password1]").val();
var password2 = $("input[name=password2]").val();
var newpassword = $("input[name=newpassword]").val();
/* Password Validation */
// If fields are empty
if (password1 === '') {
check = false;
$("input[name=password1]").css('border', 'solid 2px red');
}
// If fields are empty
if (password2 === '') {
check = false;
$("input[name=password2]").css('border', 'solid 2px red');
}
// If fields are empty
if (newpassword === '') {
check = false;
$("input[name=newpassword]").css('border', 'solid 2px red');
}
if (check = true) {
$.ajax({
type: "POST",
url: "process/updatepassword.php",
data: $(".updatepasswordform").serialize(),
dataType: "json",
success: function (response) {
/* Checks for database validation, removed for space saving */
}
});
}
return false;
});
});
if (check = true)
是分配。 您需要检查。
if (check == true) {
或者就像JasonP提到的那样
if (check) {
您在if语句中仅使用一个等于。 改成这个
if (check == true) {
甚至更好
if (check) {
您使用赋值=
而不是比较==
来测试check
。 代替这个...
if (check = true) {
你的意思是这样写:
if (check == true) {
这是一个常见的陷阱。 将true
赋值以check
if
语句的条件是完全有效的,尽管在这种情况下,这不是您的本意。 check = true
的结果也为 true
(允许并行分配, a = b = c = true
可以工作),因此从本质上讲,您在执行if (true)
。 这是可取的,尽管经常不小心使用会引起麻烦。 一般用途是将表达式的结果分配给范围为if
语句的临时变量。
基本上,代替这个...
var result = expensiveCalculation()
if (result) {
// do something with result
}
...它可以让你这样写:
if (result = expensiveCalculation()) {
// do something with result
}
注意:
在这种特殊情况下,当您针对布尔值true
/ false
进行测试时,始终最好只编写if (check)
或if (!check)
而不是使用==
进行显式比较。
笔记2:
“ check”是一个特别糟糕的变量名。 您的变量应富有表现力; 我应该知道它的作用,无需评论。 在这种情况下,我会至少称它为valid
,或者可能是formIsValid
,或者将检查结果反转并使用var errors = false
和if (!errors)
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.