我使用jquery ajax get方法从服务器获取信息,但是我有问题解析信息,以便我可以使用它。我的网站有一个产品库,它将根据类别过滤它的项目。
下面是jQuery 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) {
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));
}
我在success函数中使用警报来查看信息是否成功传递,但目前没有警报,我得到一个:Unexpected token o
错误。
我不确定我是否正确解析信息,或者如果我没有正确使用JSON
tl;dr: $.parseJSON(data);
应移除
您的服务器正在返回JSON(但声称它正在发送HTML,您应该有header("Content-Type: application/json")
)。
您已经告诉jQuery忽略它是HTML的声明并将其解析为JSON。(如果您解决了上述问题,这将是多余的)
dataType: 'json',
解析后的数据传递给success
函数。
然后将该数据传递给JSON.parse
,以便将其转换为字符串(看起来像[ [Object object], ...
并且不是有效的JSON),然后出现错误。
删除:
arr = $.parseJSON(data);
和data
一起使用