【发布时间】:2014-10-20 16:40:37
【问题描述】:
我正在使用 ajax get 方法从我的数据库中返回一些信息。 ajax 方法将已选择的任何类别发送到 php 脚本,该脚本获取我的 products 表中的所有行并将这些行添加到名为 $arr 的变量中。 $arr 是一个多维数组,包含每个项目和该项目的详细信息。
一旦返回到 ajax 成功函数,我真的很难尝试访问这些信息。这是我的 ajax 函数,其中包含我试图用来查看“数据”对象中包含的数据的警报:
$('.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 调试代码,我可以看到正确的数据肯定包含在“数据”对象中:
如何访问这些数据?
【问题讨论】:
-
尝试
console.log(data);,避免alerts -
如果我这样做,它会将对象记录到控制台。我仍然不确定如何访问对象内的各个元素
-
危险:你很容易受到SQL injection attacks的影响,你需要defend你自己。
标签: php jquery arrays ajax json