我无法从json对象中检索数据;以下代码在控制台中为var r
返回undefined,但非常相似的代码(如下所示)在JSFiddle中有效。
var currentIMGArray = new Array();
$.ajax({
url:"foo.php",
type: "post",
data: {
action: "foo",
parameter: foo,
},
dataType: "json",
success: function (result) {
currentIMGArray = result[3];
console.log(currentIMGArray);
},
});
$(document).ready(function(){
$("#W").on("click", ".IMG", function() {
console.log("currentIMGArray: "+currentIMGArray.toString());
var IMGid = $(this).attr("id");
console.log("IMGid: "+IMGid);
var r = currentIMGArray.IMGid;
console.log("r: "+r);
})
})
这是控制台输出:
[Log] {imgGallery0: "1.jpg", imgGallery1: "2.jpg"}
[Log] currentIMGArray: [object Object]
[Log] IMGid: imgGallery0
[Log] r: undefined
但是这段代码在JSfiddle中有效,所以我很困惑,差异在哪里?
var arr = {imgGallery0: "1.jpg", imgGallery1: "2.jpg"};
var b = arr.imgGallery1;
console.log(b)
答案 0 :(得分:1)
使用var r = currentIMGArray[IMGid];
而不是var r = currentIMGArray.IMGid;
由于 IMGid 是一个变量且可以更改其值,因此您需要使用数组样式方法访问内容 currentIMGArray [IMGid] 这意味着< strong> IMGid 变量 imgGallery0 , imgGallery1 从 currentIMGArray 对象中获取该确切密钥。想象一下,如果你有像 {imgGallery0:&#34; 1.jpg&#34;,imgGallery1:&#34; 2.jpg&#34 ;, IMGid:&#39; 3.jpg&#39;} < / strong>你如何获得 3.jpg ? 在这种情况下, currentIMGArray.IMGid 将返回 3.jpg
答案 1 :(得分:0)
尝试这样:
var r = currentIMGArray[IMGid];
当您放置var r = currentIMGArray.IMGid
时,您试图访问IMGid
对象上名为currentIMGArray
的属性,这就是为什么它会返回undefined