将可选数组从PHP传递给jQuery

时间:2018-03-23 14:44:39

标签: javascript php jquery

如果此可选数组为空,则会出现问题:

<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。

4 个答案:

答案 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) ?>; ;