我正在使用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));
}
我在成功函数中使用警报来查看信息是否成功通过,但此刻没有警报,我得到一个:
Unexpected token o
错误。
我不确定我是否正确解析信息或者我是否正确使用JSON
答案 0 :(得分:1)
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
。