我尝试通过 AJAX 发送一个Get请求,并以html格式输出服务器返回的json数据。
但是,我得到了这个错误。
Uncaught TypeError: Cannot use 'in' operator to search for '324' in
[{"id":50,"name":"SEO"},{"id":22,"name":"LPO",}]
这是我的代码,发送一个Get请求到php文件的 AJAX .当我使用$.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",}]
有人知道如何解决这个问题吗?
请帮助我。提前感谢:)
6条答案
按热度按时间kupeojn61#
你有一个JSON字符串,而不是一个对象。告诉jQuery你需要一个JSON响应,它会为你解析它。要么使用$.getJSON代替$.get,要么将dataType参数传递给
$.get
:tp5buhyn2#
您还可以使用
$.parseJSON(data)
,它将显式地将来自PHP脚本的字符串转换为真实的的JSON数组。ix0qys7i3#
如果要获取JSON,请使用$.getJSON(),这样它会自动将JSON转换为JS对象。
pobjuy324#
我通过添加json dataType修复了一个类似的错误,如下所示:
在我的控制器中,我不得不在任何字符串周围使用双引号,就像这样(注意:必须在java中对它们进行转义):
因此,如果数字是作为字符串使用的,您可以尝试在数字两边使用双引号(并删除最后一个逗号):
fkaflof65#
使用getJSON
详细信息请看此处http://api.jquery.com/jQuery.getJSON/
wvt8vs2t6#
在我的例子中,我忘了告诉类型控制器响应是JSON对象。