如果此可选数组为空,则会出现问题:
<script>
var parsedArray = JSON.parse('<?php echo json_encode($myArray); ?>');
console.log(parsedArray );
</script>
如果数组不为空,则一切正常,但如果数组中没有值,则会出现问题;
未捕获的SyntaxError:位于0的JSON中的意外的标记A
如果数组为空,Console.log只会吐出Array
。
我想了解这是如何正确完成的。如何将一个空数组传递给jQuery,以便我可以在其上运行myArray.length
函数,如果它是空的则返回0。
答案 0 :(得分:2)
您可以在回显$myArray
时使用tenary运算符。如果它是空的,您可以简单地将null
传递给JSON.parse
,即:。
var parsedArray = JSON.parse('<?php echo !empty($myArray) ? json_encode($myArray) : "null"; ?>');
console.log(parsedArray);
答案 1 :(得分:1)
通过上面的回答,我还将'
添加到PHP:
var parsedArray = JSON.parse(<?php echo !empty($myArray) ? "'" . json_encode($myArray) . "'" : "null"; ?>);
console.log(parsedArray);
因为我们不会将null
用作'null'
。
答案 2 :(得分:1)
您可以在回复时检查$myArray
,如果它为空则执行某些操作。该怎么做取决于你将如何使用parsedArray
后记。您可以传递一个空数组[]
:
var parsedArray = JSON.parse('<?php echo !empty($myArray)? json_encode($myArray) : "[]"; ?>');
console.log(parsedArray);
答案 3 :(得分:0)
我认为没有必要做if语句我想出来了,我的问题是我在PHP代码中执行了json_encode($ myArray),然后在javascript中执行了JSON.parse
它的工作方式没有问题:
PHP中的只是声明数组
test
并在脚本下的php文件中吐出来像这样:
$myArray = [];
现在即使数组为空,它也会吐出var myArray = <?= json_encode($myArray) ?>;
;