Php Jquery-未捕获类型错误:无法使用';在';操作员搜索';324';在里面
我试图通过ajax发送Get请求,并输出服务器以html格式返回的json数据 但是,我犯了这个错误Php Jquery-未捕获类型错误:无法使用';在';操作员搜索';324';在里面,php,javascript,jquery,ajax,yii,Php,Javascript,Jquery,Ajax,Yii,我试图通过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', fu
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",}]
有人知道如何解决这个问题吗
请帮帮我。
提前感谢:)您有一个JSON字符串,而不是对象。告诉jQuery您希望得到一个JSON响应,它将为您解析它。使用而不是,或者将数据类型参数传递给
$。获取:
$.get(
'index.php?r=admin/post/ajax',
{"parentCatId":parentCatId},
function(data){
$.each(data, function(key, value){
console.log(key + ":" + value)
})
},
'json'
);
如果要获取JSON,请使用so,它会自动将JSON转换为JS对象。您还可以使用$.parseJSON(数据)
将来自PHP脚本的字符串显式转换为真实的JSON数组。我通过添加JSON数据类型修复了类似错误,如下所示:
$.ajax({
type: "POST",
url: "someUrl",
dataType: "json",
data: {
varname1 : "varvalue1",
varname2 : "varvalue2"
},
success: function (data) {
$.each(data, function (varname, varvalue){
...
});
}
});
在我的控制器中,我必须在任何字符串周围使用双引号(注意:它们必须在java中转义):
因此,如果数字用作字符串,您可以尝试在数字周围使用双引号(并删除最后一个逗号):
使用getJSON
$.getJSON(
'index.php?r=admin/post/ajax',
{"parentCatId":parentCatId},
function(data){
$.each(data, function(key, value){
console.log(key + ":" + value)
})
});
在我的例子中,我忘记告诉类型控制器响应是JSON对象。
setContentType(“应用程序/json”) 该错误消息来自何处?能否在每个stmt之前添加console.log(data)
,并查看控制台中打印的内容谢谢!我的问题现在解决了:)这可能有助于某人在这里登陆,但我的问题是使用$。each('selector')…
而不是$('selector')。each(…
对于从谷歌来这里查找此问题的任何人来说,$.post,将相同的第三个参数添加到$.post也有效
[{"id":"50","name":"SEO"},{"id":"22","name":"LPO"}]
$.getJSON(
'index.php?r=admin/post/ajax',
{"parentCatId":parentCatId},
function(data){
$.each(data, function(key, value){
console.log(key + ":" + value)
})
});