【发布时间】:2021-07-16 09:50:58
【问题描述】:
我正在使用 JQuery .ajax() 发送我的表单数据,并且我想检查是否每个输入字段都已填写。但是当我尝试比较布尔变量时,它总是出现在 else{} 语句中。
那是我的 JQuery:
$(document).ready(function(){
$('.form').on('submit', function(e){
e.preventDefault();
var formData = $('.form').serializeArray();
$.ajax({
url: '../php/data.php',
type: 'POST',
data: $(this).serialize(),
success: function(response){
if(response === true){
$('.result').html("Message sent!").css("color","green");
} else{
$('.result').html("Please fill all fields").css("color","red");
}
}
})
})
});
这就是php:
<?php
$flag = true;
$data = $_POST;
foreach ($data as $row) {
if ($row === '') {
$flag = false;
}
}
var_dump($flag);
?>
问题是我做错了什么???
【问题讨论】:
-
response的值是多少?我的 PHP 生锈了,但var_dump($flag)不应该是print $flag吗? -
如果填写所有字段,则值为“bool(true)”,否则为“bool(false)”。当我必须比较响应时,问题就来了
-
bool(true)不是有效的 JavaScript 变量。如果结果是 string"bool(true)"那么这是一个字符串而不是布尔值。 -
您正在使用普通的 AJAX 调用,它将以字符串形式返回该调用的内容。在这种情况下,它将返回
"bool(true)"。 -
@KIKOSoftware 对,我就是这么想的。所以它需要使用
print或任何最合适的 PHP 运算符,只输出值,而不是值的调试版本。
标签: php jquery if-statement boolean