Ajax访问从PHP返回的JSON多维数组

Ajax访问从PHP返回的JSON多维数组,php,jquery,arrays,ajax,json,Php,Jquery,Arrays,Ajax,Json,我使用ajaxget方法从数据库返回一些信息。ajax方法将选择的类别发送到php脚本,该脚本获取my products表中的所有行,并将这些行添加到名为$arr的变量中。$arr是一个多维数组,包含每个项目和该项目的详细信息 一旦这些信息返回到ajaxsuccess函数,我就很难访问这些信息。以下是我的ajax函数,其中包含我尝试用于查看“data”对象中包含的数据的警报: $('.category').click(function() { var category; if

我使用ajaxget方法从数据库返回一些信息。ajax方法将选择的类别发送到php脚本,该脚本获取my products表中的所有行,并将这些行添加到名为$arr的变量中。$arr是一个多维数组,包含每个项目和该项目的详细信息

一旦这些信息返回到ajaxsuccess函数,我就很难访问这些信息。以下是我的ajax函数,其中包含我尝试用于查看“data”对象中包含的数据的警报:

$('.category').click(function() {

    var category;

    if ($(this).hasClass('Shirts')) {
        category = 'shirts';
    }
    if ($(this).hasClass('Hats')) {
        category = 'hats';
    }
    if ($(this).hasClass('Acc')) {
        category = 'acc';
    }

    $.ajax({
        type: 'GET',
        url: 'galleryfetch.php',
        data: { 'category' : category },
        dataType: 'json',
        success:  function(data) {


            // alert(data);  Alerts '[object Object]'
            // alert(data[0]); Alerts 'undefined'
            // alert(data[0].ID); Console Error: Cannot read property 'ID' of undefined
            // alert(data.array[0].ID); Console Error: Cannot read property 'ID' of undefined
        }
    });
});
该函数找出已单击的类别,然后将其发送到galleryfetch.php脚本,该脚本从数据库中获取具有该类别的所有行,并以JSON格式返回这些行,如下所示:

如果我使用Firebug调试代码,我可以看到正确的数据肯定包含在“data”对象中:


如何访问此数据?

我认为问题在于您将数据放在一个名为data的键中。因此,这将输出您的预期结果

$.ajax({
        type: 'GET',
        url: 'galleryfetch.php',
        data: { 'category' : category },
        dataType: 'json',
        success:  function(data) {

              console.log(data.data[0]);
        }
    });

编辑:如果你使用谷歌浏览器,我推荐邮递员插件。这是一种模拟AJAX调用的好方法,特别是如果您使用的是不太常见的HTTP方法,如PUT和DELETE。我在尝试开发自己的API时经常使用它。

根据发布的图像,您将收到一个名为
data
的数组,该数组由4个对象组成。问题是,在这些对象中的每一个对象中,您都混淆了数字索引和关联索引。我想试试这个:

success:  function(data) {

   // accessing all the properties
   for(var x in data["data"]) {
      for(var y in data["data"][x]) {
         if (y=="ID") {
            alert( "ID of "+x+" is: "+data["data"][x][y] );
         }
      }
   }

   // or simply
   alert( data["data"][0]["ID"] );

}

您返回的数组中有一个键“data”,它接收同名的javascript参数/变量。 您应该检查javascript data.data,它是一个数组:


console.log(data.data[0])

try
console.log(data)
,避开
警报
如果我这样做,它会将对象记录到控制台。我仍然不知道如何访问对象内部的各个元素,尽管危险:您很容易受到您需要的攻击。非常感谢!!真的很挣扎this@Mikey,只是旁注。由于您将通过其数据库字段名称访问属性,请将其调用为“代码> MySQL查询($CONN),“..查询…”,MyQuiLasAsOC);代码>。请注意标志MYSQLI_ASSOC,以避免检索并因此发送数值字段和ASSOC字段。好的,我们也会这样做:)
success:  function(data) {

   // accessing all the properties
   for(var x in data["data"]) {
      for(var y in data["data"][x]) {
         if (y=="ID") {
            alert( "ID of "+x+" is: "+data["data"][x][y] );
         }
      }
   }

   // or simply
   alert( data["data"][0]["ID"] );

}