Javascript jQuery getJSON未定义错误
好吧,我做了一些搜索和尝试,但没有运气。我希望这里有人能给我指出正确的方向。我有一个正在使用的JSON提要,它应该输出各种数据。目前,它只是返回所有变量的“未定义”响应。以下是我正在使用的JS:Javascript jQuery getJSON未定义错误,javascript,jquery,json,Javascript,Jquery,Json,好吧,我做了一些搜索和尝试,但没有运气。我希望这里有人能给我指出正确的方向。我有一个正在使用的JSON提要,它应该输出各种数据。目前,它只是返回所有变量的“未定义”响应。以下是我正在使用的JS: $("#loaduserdata").click(function(){ $("#userdata tbody").html(""); $.getJSON("trendFetch", function(data){ $.each(data.list, function(i
$("#loaduserdata").click(function(){
$("#userdata tbody").html("");
$.getJSON("trendFetch", function(data){
$.each(data.list, function(i, data){
var jsondata = data.action;
console.log (jsondata);
});
}
);
我不确定问题在哪里,因为console没有给我任何类型的错误或任何理由认为JSON格式不正确:
不管它值多少钱,下面是我用来生成JSON的代码——也许这方面有问题
$curl = curl_init();
$url = 'http://api.site.com';
curl_setopt_array($curl, array(
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_URL => $url
));
$resp = curl_exec($curl);
if($resp){
echo $resp;
header("Content-Type: application/json", true);
}
else {
echo 'Error - no response!';
}
curl_close($curl);
编辑-包括JSON输出:
{
"status": "ok",
"list": {
"list_id": "2gz",
"title": "Test List",
"description": "description text...",
"image": [
"http://t2.gstatic.com/images?q=tbn:ANd9GcTz6_4aV6oHsI2kgJRRoSFCTWbew5ChTeBrAmXYh4Gez2J7usm8nwMOsA",
"http://cdn.list.ly/logos/default-list-image.png"
],
"views": 0,
"item_count": 1,
"curator_count": 1,
"follower_count": 1,
"listly_url": "http://api.list.ly/list/2gz-test-list",
"items": [
{
"item": {
"name": "Link 1",
"image": "http://t2.gstatic.com/images?q=tbn:ANd9GcTz6_4aV6oHsI2kgJRRoSFCTWbew5ChTeBrAmXYh4Gez2J7usm8nwMOsA",
"note": null,
"url": null,
"likes": 0,
"dislikes": 0
}
}
],
"suggested_items": []
}
}
在任何输出之前设置标题
header("Content-Type: application/json", true);
echo $resp;
应该是:
header("Content-Type: application/json", true);
echo $resp;
您需要在输出任何内容之前发送HTTP头。如果您提供JSON响应会有所帮助 当我遇到这些类型的问题时,我通常会后退一步(在代码中)并更早地执行
console.log()。例如,函数(数据){}
中的console.log(数据)
我认为——从输出来看——你的问题是列表实际上不是一个列表。事实上,data.list是一个对象。因此,.each()
将迭代各个项目(如列表id、标题等)。它们都没有.action
属性
我看不到任何操作属性,因此无法提出解决方案建议。它可能在list对象中,但您仍然将其视为一个数组(好像它是list:[{},{}]
而不是list:{}
)。在这种情况下,您要么修复返回的JSON,要么去掉$.each()
,只需console.log(data.list.action)
穆萨就可以为我解决这个问题,所以万一有人在谷歌上搜索,问题是我在不需要的时候尝试使用$.each。如果有人感兴趣,以下是正确的代码:
$.getJSON("trendFetch",function(data){
var tblRow =
"<tr>"
+"<td>"+data.list.list_id+"</td>"
+"<td>"+data.list.title+"</td>"
+"<td>"+data.list.description+"</td>"
+"</tr>"
$(tblRow).appendTo("#userdata tbody");
}
);
$.getJSON(“trendFetch”),函数(数据){
var tblRow=
""
+“”+数据。列表。列表\u id+“”
+“”+数据。列表。标题+“”
+“”+数据.列表.说明+“”
+""
$(tblRow).appendTo(“#userdata tbody”);
}
);
为什么我认为Javascript的前两行毫无意义?是的,我清理了它。我按照您的要求进行了更改,但不幸的是,它没有解决问题。不管怎样,谢谢你的提示,无论如何它都需要正确格式化。@application.js的第64行是什么?第64行=console.log(jsondata);正如我向Cryptic提到的,我认为这个问题与PHP无关,因为当我在控制台中查看JSON时,它看起来不错。还有其他想法吗?@viablepath是的,我刚刚看到了图片,你能把JSON作为文本发布吗。当然,我刚刚把它添加到原始帖子中。谢谢@viablepath JSON响应中没有任何action属性,您想用什么数据做什么?我只想将它附加到一个div中,并在我的站点上显示它。不确定你所说的无操作属性是什么意思-抱歉?我只是在原始帖子中添加了JSON响应。这就是我在函数(数据)中添加console.log时得到的结果:是的。请看我添加的最后一段。你发布的JSON响应仍然是这样。操作(您正试图使用数据访问该操作。操作
)不存在。你应该描述你想要的结果是什么。我想从列表数组中提取一些变量(list_id,title,description),并将它们显示在一个表中。
$.getJSON("trendFetch",function(data){
var tblRow =
"<tr>"
+"<td>"+data.list.list_id+"</td>"
+"<td>"+data.list.title+"</td>"
+"<td>"+data.list.description+"</td>"
+"</tr>"
$(tblRow).appendTo("#userdata tbody");
}
);