好吧,所以我做了一些搜索,没有运气。我希望这里有人能指出我正确的方向。我有一个我正在使用的JSON提要,它应该输出各种数据。目前,它只发送回所有变量的“UNDEFINED”响应。这是我正在使用的JS:
$("#loaduserdata").click(function(){
$("#userdata tbody").html("");
$.getJSON("trendFetch", function(data){
$.each(data.list, function(i, data){
var jsondata = data.action;
console.log (jsondata);
});
}
);
我不确定问题出在哪里,因为控制台没有给我任何错误或任何理由认为JSON格式不正确:http://i.imgur.com/ySpdR.png
无论它值多少,这里是我用来生成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": []
}
}
答案 0 :(得分:4)
echo $resp;
header("Content-Type: application/json", true);
应该是:
header("Content-Type: application/json", true);
echo $resp;
您需要在输出任何内容之前发送HTTP标头。
答案 1 :(得分:3)
在任何输出之前设置标题
header("Content-Type: application/json", true);
echo $resp;
答案 2 :(得分:0)
如果你提供了JSON响应,它会有所帮助。
当我遇到这些类型的问题时,我通常会先退一步(在代码中)和console.log()
。例如,console.log(data)
中的function(data) {}
。
我认为 - 从查看输出 - 您的问题是列表实际上不是列表。 data.list实际上是一个对象。因此.each()
将迭代各个项目(如list_id,title等)。这些都没有.action
属性。
我看不到任何动作属性,所以我无法提出解决方案建议。它可能在列表对象中 - 但您仍然将它视为一个数组(就好像它是list: [{}, {}]
而不是list: {}
)。在这种情况下,您需要修复返回的JSON或删除$.each()
,并且只需console.log(data.list.action)
。
答案 3 :(得分:0)
Musa能够为我解决这个问题,所以万一有人谷歌,问题是我在不需要的时候尝试使用$ .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");
}
);