我在php变量中有一个名为$ result的数组。
当我echo json_encode($result);
时,我得到:
[{"id":"4","rank":"adm","title":"title 1"},
{"id":"2","rank":"mod",,"title":"title 2"},
{"id":"5","rank":"das","title":"title 3"},
{"id":"1","rank":"usr""title":"title 4"},
{"id":"3","rank":"ref","title":"title 5"}]
然而,当尝试使用警报获得相同时,我会得到不同的结果。这是一个例子。
<script type="text/javascript">
//<![CDATA[
$(document).ready(function() { myArray = <?=json_encode($result);?>; });
$('img.delete').click(function() { alert(myArray); }
//]]>
</script>
我收到的提醒是[object Object],[object Object], ...
我不确定,但似乎变量myArray
没有正确传递到$('img.delete').click(function()
。
答案 0 :(得分:1)
在我看来,你有一个对象数组,在JS中我会说你需要遍历对象并读取其中的变量,因为警报没有显示对象的内容就是你'我要求在数组中显示什么 - 也就是说:和对象数组。
我会将数组保存到变量并通过数组进行迭代,然后输出每个数组中包含的数组。
嗯....有点像这样:for(i = 0; i < myArray.length; i++) {
// access each sub object and collate the info you want to display
// ie: myArray[i]['id']
}
我可能过度简化了,但我记得在构建的ajax应用程序中遇到了同样的问题,我确信这就是我的方式。
答案 1 :(得分:1)
调用alert(myArray)
不会为您提供数据的json表示。函数alert()
在其参数上调用toString()
。而javascript对象的默认toString()
实现只返回字符串"[object Object]"
。
如果要显示JSON表示,则可以使用json序列化库生成json字符串。 This page解释了一个例子。
答案 2 :(得分:0)
你会期待什么?
在php中尝试echo array("1" => 1, "2" => 2);
,看看你得到了什么。
myArray是一个javascript对象,而不是一个可以轻松输出的字符串。如果要输出特定值,请写入alert(myArray[0]['id']);
另一件事 - 变量范围。如果要在各种闭包中使用myArray,则应将其声明为全局。