Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php JSON Ajax get方法出错_Php_Jquery_Ajax_Json - Fatal编程技术网

Php JSON Ajax get方法出错

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

我使用jqueryajaxget方法从服务器获取信息,但是在解析信息以便使用时遇到了问题。我的网站有一个产品库,将根据类别过滤其项目

以下是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));
    }
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);