Javascript对象;访问json数组的问题

时间:2018-01-08 15:08:20

标签: javascript json

我无法从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)

2 个答案:

答案 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