【问题标题】:Comparing two boolean variables in JS比较JS中的两个布尔变量
【发布时间】: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


【解决方案1】:

你应该使用

echo $flag;

而不是var_dump() 函数。这个仅用于调试目的,并向您显示有关您将传递给它的变量的一些数据。

【讨论】:

    猜你喜欢
    • 2014-10-29
    • 2014-02-24
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多