JSON Ajax get方法出错

时间:2014-08-26 10:52:45

标签: php jquery ajax json

我正在使用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

1 个答案:

答案 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