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

新手上路,请多包涵

我正在尝试通过 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",}]

任何人都知道如何解决这个问题?

请帮帮我。提前致谢 :)

原文由 Hayato 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 389
2 个回答

你有一个 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'
);

原文由 Paul 发布,翻译遵循 CC BY-SA 3.0 许可协议

就我而言,我忘记告诉类型控制器响应是 JSON 对象。

 response.setContentType("application/json");

原文由 jose lopez 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题