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