Php JSON Ajax get方法出错
我使用jqueryajaxget方法从服务器获取信息,但是在解析信息以便使用时遇到了问题。我的网站有一个产品库,将根据类别过滤其项目 以下是jQuery ajax函数:Php JSON Ajax get方法出错,php,jquery,ajax,json,Php,Jquery,Ajax,Json,我使用jqueryajaxget方法从服务器获取信息,但是在解析信息以便使用时遇到了问题。我的网站有一个产品库,将根据类别过滤其项目 以下是jQuery ajax函数: $('.category').click(function() { var category; if ($(this).hasClass('Shirts')) { category = 'shirts'; } if ($(this).ha
$('.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) {
arr = $.parseJSON(data);
alert(arr);
}
});
});
这是信息发布到的php脚本:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'GET') {
$category = $_GET['category'];
$conn = mysqli_connect('localhost', '*****', '*****', '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));
}
tl;dr:$.parseJSON(数据)应删除代码>
您的服务器正在返回JSON(但声称它正在发送HTML,您应该有标题(“内容类型:application/JSON”)
)
您已经告诉jQuery忽略它是HTML的声明,并将其解析为JSON。(如果您解决了上述问题,这将是多余的)
解析后的数据将传递给success
函数
然后将该数据传递给JSON.parse
,以便将其转换为字符串(看起来像[[Object Object],…
,并且不是有效的JSON),然后返回错误
删除:
arr = $.parseJSON(data);
只需使用数据
危险:您很容易受到您需要从中获取的数据的攻击。请尝试使用数据:{“category”:“category”}。因为json格式支持双精度quote@BhumiShah-这是JavaScript对象文字,不是JSON。好的,警报现在显示object[object]。我如何访问该对象中包含的数据?@Mikey-与访问任何其他对象中的数据的方式相同。variable\u name.property\u name
。因此,理论上我应该能够使用alert(数据[0].id)访问行中第一个数组的“id”元素?因为我随后会收到控制台错误“无法读取未定义的属性id”。如果我使用警报(数据[0]),我会收到“未定义”的警报,如果我使用警报(数据.id),我还会收到“未定义”的警报echo json_encode(数组('data'=>$arr));
-您没有数组。您有一个名为data
的属性的对象,该属性包含数组。好的,问题是数据对象中有多个数组。因此,我不确定在ajax回调函数成功后如何访问这些数组中的数据。使用数据[0],数据[0].id、data.id都不起作用:(
arr = $.parseJSON(data);