json_encode正在从Javascript返回未定义
我有一个php数组,我对它进行json_编码并传递给javascript函数中的一个变量。一切看起来都正常,在Json编码之后,数组看起来像是一个有效的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()
<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是的,那么您无论如何都不想使用数组!在这种情况下,您绝对必须使用对象。否则,您希望这些键如何对齐?如果必须计算对象中键值对的数量,请考虑在.each()
方法。这可能会变得相当复杂,具体取决于对象,也可能很简单,例如循环中的一个for。