我是JSON / Javascript新手并且遇到这种性质的问题。
在我的php脚本中我将php数组传递给javascript,如下所示:
echo '<img id="Next" src="misc/arrow_right.png" onclick="imageSlider(' . json_encode($images) . ')" >';
在我的javascript中:
function imageSlider(imagesArray) {
alert(imagesArray);
}
上面的警告打印表单对象Object
的输出问题是我不知道如何最好地'分解'或分解这个对象,以便我可以提取我原来json_encoded的数据。原始数组的结构是一个带字符串的简单数字索引数组,即{ {1}}等
我也试过["image1", "image2",...]
,我得到了这个字符串:
{ “1”: “images1.jpg”, “2”: “images2.jpg”, “3”: “images3.jpg”, “4”: “images4.jpg”, “5”:“images5 .JPG“}
无论哪种方式,我都不确定如何最好地在javascript中获取我的图像名称和数组索引。例如 从对象中提取1和images1.jpg或者是否有办法将'stringified'对象转换为真正的javascipt数组......? 感谢
答案 0 :(得分:0)
var imgs=eval('('+imagesArray+')');
然后你可以访问imgs对象。
请记住,这不再是索引数组,而是键值存储:
for (key in imgs){
var img=imgs[key];
console.log(img);
}
答案 1 :(得分:0)
您可以使用着名的json2.js在Javascript中将json字符串解析为对象。包含json2.js后,您可以使用:
imageArray = JSON.parse(encodedJson);
我认为在你的例子中,如果你有一个json编码对象,它已经是一个真正的javascript对象。你可以使用
console.log(imageArray);
查看imageArray的内容。您可以访问对象的属性,如:
alert(imageArray[1]) //this will alert "image1.jpg"
但我想让你知道imageArray不是一个数组,它是一个javascript对象。如果键是一个数字(如您的示例中所示),则无法使用点表示法来达到javascript对象的值。所以你不能使用 imageArray.1 来达到“image1.jpg”,你应该使用方括号,如果你的键是上面代码的数字。如果要使用点表示法,则应创建键字符串,例如:
imageArray = { "i1": "image1.jpg", "i2": "image2.jpg" } //this way you can use imageArray.i1 to get "image1.jpg"
答案 2 :(得分:0)
你很亲密。
function imageSlider(imagesObject) {
//access it like an Array (note the quotes around 1), no other changes needed.
imagesObject["1"];
}