Ajax JSON Array - 访问信息

时间:2014-07-08 16:51:15

标签: javascript jquery ajax arrays json

我有以下代码:

$.getJSON('../_javascripts/array.php')
    .success(function(response) { console.info(response); alert("success"); })
    .fail(function(jqXHR, status, error){ console.info(error); alert("error"); });

哪个显示控制台内的输出,但是,我试图访问该信息(显示在控制台中 - 它是一个数组),似乎无法。

控制台输出

Object {P5yTZ947: Array[3], 11y6tdo8: Array[3], 66j8ttk2: Array[3], 27c7uqv0: Array[3], 44f6hvt7: Array[3]…}

我尝试了以下内容:

alert(response);
alert(response[0]);
var array = response;

所有这些都带回undefined

显然我做错了什么但不能完全理解。欢迎任何建议,反馈和意见。

3 个答案:

答案 0 :(得分:0)

从控制台输出的内容看起来像array.php返回的是一个包含数组的对象。

答案 1 :(得分:0)

您对响应的处理必须来自$.getJSON();

的回调函数

也就是说,成功情况下响应对象的范围仅在成功函数内。把你的成功处理代码放在那里(或从那里调用),你应该好好去。

例如:

function doSomethingWithSuccessResponse( response ){
  console.log( response );

  // Execute the rest of your success case logic here
}

$.getJSON('../_javascripts/array.php')
    .success(function(response) { doSomethingWithSuccessResponse(response); })
    .fail(function(jqXHR, status, error){ console.info(error); alert("error"); });

或者,更简洁:

function doSomethingWithSuccessResponse( response ){
  console.log( response );

  // Execute the rest of your success case logic here
}

$.getJSON('../_javascripts/array.php')
    .success(doSomethingWithSuccessResponse)
    .fail(function(jqXHR, status, error){ console.info(error); alert("error"); });

同样对于失败案例 - 在失败回调中执行失败处理逻辑。

看起来你的API正在返回一个带有嵌入式数组的对象:

Object {
  P5yTZ947: Array[3], 
  11y6tdo8: Array[3], 
  66j8ttk2: Array[3], 
  27c7uqv0: Array[3], 
  44f6hvt7: Array[3]…
}

使用object-looping semantics迭代对象。然后使用内部循环遍历数组的元素:

for (var key in response) {
   if (response.hasOwnProperty(key)) {
      // key is now "P5yTZ947" or "11y6tdo8", etc
      var innerArray = response[key];

      // Loop over the values of the inner array
      for( var i = 0; i < innerArray.length; i++ ){
        console.log( innerArray[i] );  // 
      }
   }
}

答案 2 :(得分:0)

由于我们无法访问您的array.php文件,因此很难回答您。尝试使用以下代码调试response输出(您需要打开开发人员控制台):

$.getJSON('../_javascripts/array.php', function( data ) {
    $.each( data, function( key, value ) {
        console.log( key );
        for( var i in value ) {
            console.log( "  " + JSON.stringify(value[i]) );
        }
    });
});

尝试在 Google Chrome 控制台中使用断点来检查data(Ajax响应)变量内容。