Jquery – Uncaught TypeError:不能使用'in'运算符来search'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发送一个Get请求到php文件。 当我使用$ .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(); } 

JSON数据输出的PHP是这样的。

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

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

请帮我一下 提前致谢 :)

你有一个JSONstring,而不是一个对象。 告诉jQuery你期望得到一个JSON响应,它会为你parsing它。 使用$ .getJSON而不是$ .get ,或将dataTypeparameter passing给$.get

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

您也可以使用$.parseJSON(data) ,它将显式地将来自PHP脚本的string转换为真正的JSON数组。

如果您要获取JSON,请使用$ .getJSON(),以便自动将JSON转换为JS对象。

我通过添加json数据types来修复类似的错误:

 $.ajax({ type: "POST", url: "someUrl", dataType: "json", data: { varname1 : "varvalue1", varname2 : "varvalue2" }, success: function (data) { $.each(data, function (varname, varvalue){ ... }); } }); 

在我的控制器中,我不得不在任何string周围使用双引号(注意:它们必须在java中转义):

 @RequestMapping(value = "/someUrl", method=RequestMethod.POST) @ResponseBody public String getJsonData(@RequestBody String parameters) { // parameters = varname1=varvalue1&varname2=varvalue2 String exampleData = "{\"somename1\":\"somevalue1\",\"somename2\":\"somevalue2\"}"; return exampleData; } 

所以,你可以尝试在数字周围使用双引号(如果它们被用作string的话)(并删除最后一个逗号):

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

使用getJSON

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

细节看这里http://api.jquery.com/jQuery.getJSON/