【发布时间】: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