【问题标题】:JQuery and JSON array - How to check if array is empty or undefined?JQuery 和 JSON 数组 - 如何检查数组是否为空或未定义?
【发布时间】:2012-11-03 03:47:44
【问题描述】:

我需要将 php 数组传递给 jquery 以完成某些任务。为 SESSION 创建 php 数组,然后为 jquery 创建 json_encoded。之后,我将该变量存储到 window js 命名空间,以便在我的 jquery 脚本中使用该数组。

if(isset($_SESSION['mySession'])){
    $json_array = json_encode($php_array);
}

<script>
    <?php echo "window.json_from_php = ".$json_array; ?>
</script>

我需要做的是在做任何事情之前检查这个数组是否存在/是否为空/未定义。 'undefined' 操作数的检查子句成功,但其余的则不成功。如何在 jquery 中检查数组是否为空?

这是初始化后json_encoded数组的输出,当$php_array中没有任何元素时:

string '[""]' (length=4)

这里是 jquery:

$(function() {
        var results = $('#results');
        var js_array = window.json_from_php;
        var count = js_array.length;

        if ((typeof window.json_from_php === 'undefined') || (js_array === null) || (jQuery.isEmptyObject(js_array)) || (count === 0)) {
            $('<p>Array is empty.</p>').appendTo(results);
        }
        else {
            jQuery.each(js_array,function(key,val){
                $('<ul><li id="'+key+'">'+val+'</li></ul>').appendTo(results);                  
            });
        }
    });

【问题讨论】:

  • [""] 不是一个空数组。它是一个包含一个元素的数组:一个空字符串。空数组 = [].
  • string '[""]' (length=4) 这行是什么意思?这是什么输出?它不是 JSON 结构。
  • 是的。我也不明白。
  • 我也看到了。似乎我的 php 数组一开始就不是空的,而是第一个值只是“”。现在,我需要检查它是否为“”,而不是检查它是否为空。
  • 而本例中的 js_array.length/var 计数为 1

标签: php jquery arrays json


【解决方案1】:

这就是我检查空/null json 数组的方式。

if (js_array == undefined || js_array == null || js_array.length == 0){
    $('<p>Array is empty.</p>').appendTo(results);
}

如果您的 json 数组是 [""],那么您可能需要添加类似

的内容
if (js_array == undefined || js_array == null || js_array.length == 0 || (js_array.length == 1 && js_array[0] == ""))

【讨论】:

  • 前两个检查完全一样。
  • 我应该这样做:if (!js_array || !js_array.length){...
  • @Víctor,!js_array 是否等同于 js_array == undefined || js_array == null
  • @JoeFletch 不。 !js_array 等价于 js_array == null || js_array === '' || js_array === 0 || js_array === -0 || js_array === false || isNaN(js_array)
  • @JoeFletch 你可以在这里sitepoint.com/javascript-truthy-falsy 学到一些关于真值和假值的有趣知识,这在使用 Javascript 时非常有用:)
【解决方案2】:

这就够了:

if (typeof js_array === 'undefined' || !js_array.length) {
   $('<p>Array is empty.</p>').appendTo(results);
} else {...}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-04
    • 2023-04-01
    • 1970-01-01
    • 2022-10-20
    • 2017-08-30
    • 2011-01-23
    • 1970-01-01
    相关资源
    最近更新 更多