我正在使用ajax get方法从我的数据库中返回一些信息。 ajax方法将选择的任何类别发送到php脚本,该脚本获取product表中的所有行,并将这些行添加到名为$ arr的变量中。 $ arr是一个包含每个项目和该项目详细信息的多维数组。
一旦返回到ajax成功函数,我真的很难尝试访问这些信息。这是我的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格式返回它们,如下所示:
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
$category = $_GET['category'];
$conn = mysqli_connect('localhost', 'root', 'Chan&', 'clothing');
$rows = mysqli_query($conn, "SELECT * FROM products WHERE category = '".$category."'");
while ($row = mysqli_fetch_array($rows)) {
$arr[] = $row;
}
echo json_encode(array('data' => $arr));
}
如果我使用Firebug调试代码,我可以看到正确的数据肯定包含在'data'对象中:
如何访问此数据?
答案 0 :(得分:1)
我认为问题在于您将数据放入称为数据的密钥中。所以这应该输出你的预期结果。
$.ajax({
type: 'GET',
url: 'galleryfetch.php',
data: { 'category' : category },
dataType: 'json',
success: function(data) {
console.log(data.data[0]);
}
});
编辑:如果你正在使用谷歌浏览器,我推荐使用邮差附加组件。这是模仿AJAX调用的好方法,特别是如果您使用不太常见的HTTP方法(如PUT和DELETE)。我在尝试开发自己的API时经常使用它。
答案 1 :(得分:1)
根据发布的图片,您将收到一个名为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"] );
}
答案 2 :(得分:0)
您正在返回具有密钥'数据'接收具有相同名称的javascript参数/变量。 你应该检查javascript data.data,它是一个数组:
的console.log(data.data [0])