Jquery - 未捕获的类型错误:无法使用“in”运算符搜索“324”

2022-08-30 11:19:47

我正在尝试通过ajax发送Get请求,并输出服务器在html中返回的json数据。

但是,我得到了这个错误。

Uncaught TypeError: Cannot use 'in' operator to search for '324' in 
[{"id":50,"name":"SEO"},{"id":22,"name":"LPO",}]

这是我的代码,它通过ajax向php文件发送Get请求。当我使用$.each方法时,它会得到我在上面显示的错误。

parentCat.on('change', function(e){
    parentCatId = $(this).val();

    $.get(
        'index.php?r=admin/post/ajax',
        {"parentCatId":parentCatId},
        function(data){                     
            $.each(data, function(key, value){
                console.log(key + ":" + value)
            })
        }
    )

})

这是我的PHP代码,以json格式返回查询结果。

public function actionAjax(){

    $parentCatId=$_GET['parentCatId'];

        $catData = Category::getTargetCategoryData($parentCatId);

        echo CJSON::encode($catData);
        Yii::app()->end();

}

这个php输出的json数据是这样的。

[{"id":50,"name":"SEO"},{"id":22,"name":"LPO",}]

有人知道如何解决这个问题吗?

请帮帮我。提前致谢 :)


答案 1

您有一个 JSON 字符串,而不是一个对象。告诉jQuery你期望一个JSON响应,它会为你解析它。要么使用 $.getJSON 而不是 $.get,要么将 dataType 参数传递给 :$.get

$.get(
    'index.php?r=admin/post/ajax',
    {"parentCatId":parentCatId},
    function(data){                     
        $.each(data, function(key, value){
            console.log(key + ":" + value)
        })
    },
    'json'
);

答案 2

您还可以使用它将来自PHP脚本的字符串显式转换为真正的JSON数组。$.parseJSON(data)