Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/465.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/240.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
json_encode正在从Javascript返回未定义_Javascript_Php_Jquery - Fatal编程技术网

json_encode正在从Javascript返回未定义

json_encode正在从Javascript返回未定义,javascript,php,jquery,Javascript,Php,Jquery,我有一个php数组,我对它进行json_编码并传递给javascript函数中的一个变量。一切看起来都正常,在Json编码之后,数组看起来像是一个有效的Javascript数组,但我在输出时一直没有定义。下面是代码的样子: <script src="js/jquery-1.8.1.min.js"></script> <script> $(function() { getPhotos(); }); function getPhotos()

我有一个php数组,我对它进行json_编码并传递给javascript函数中的一个变量。一切看起来都正常,在Json编码之后,数组看起来像是一个有效的Javascript数组,但我在输出时一直没有定义。下面是代码的样子:

<script src="js/jquery-1.8.1.min.js"></script>
<script>
  $(function() {
    getPhotos();
  });

  function getPhotos() {
    var photosArray= <?php echo json_encode($photos_array); ?>;
    alert(photosArray.length);
}

我做错了什么吗?

这是一个Javascript对象,不是数组,因此它没有长度属性。它也是无序的


请尝试
alert(Photosaray['11'])
查看结果。

您的数组没有用作数组,它是一个对象。JavaScript中的对象没有长度属性(当然,除非您创建了长度属性)

创建PHP数组的内容看起来就像是使用字符串作为索引。请确保它们是实整数。在PHP中,这很好,因为PHP具有关联数组的概念。当编码为JSON以在JavaScript中使用时,这将成为一个对象文本

重申一下,您不希望这样:

{"1":"1401880321163321491.png", // ...
["1401880321163321491.png", // ...
你想要这个:

{"1":"1401880321163321491.png", // ...
["1401880321163321491.png", // ...

只有当PHP数组中的数组索引是数字
1
而不是字符串
“1”
时,这才可能实现。您可能还遇到了问题,因为您的数组是“稀疏”的,无法使用普通数组文本进行复制。不能跳过数组文本中的索引。

这些数字实际上是mysql数据库中照片的id。你向我展示了一种获取价值的方法。是否有方法循环遍历数组并获取密钥?@user3423909:这些索引实际上是mysql数据库中的id。@user3423909是的,那么您无论如何都不想使用数组!在这种情况下,您绝对必须使用对象。否则,您希望这些键如何对齐?如果必须计算对象中键值对的数量,请考虑在 .siz()<代码>实现。user3423909现在你说你需要循环通过。。。请把这些细节写进你的问题中。Underline.js还有一个运行良好的
.each()
方法。这可能会变得相当复杂,具体取决于对象,也可能很简单,例如循环中的一个
for。