簡體   English   中英

jQuery getJSON未定義錯誤

[英]jQuery getJSON Undefined Error

好吧,所以我做了一些搜索,沒有運氣。 我希望這里有人能指出我正確的方向。 我有一個我正在使用的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": []
}
}
echo $resp;
header("Content-Type: application/json", true);

應該:

header("Content-Type: application/json", true);
echo $resp;

您需要在輸出任何內容之前發送HTTP標頭。

在任何輸出之前設置標題

header("Content-Type: application/json", true);
echo $resp;

如果您提供了JSON響應,它會有所幫助。

當我遇到這些類型的問題時,我通常會先退一步(在代碼中)和console.log() 例如, function(data) {} console.log(data)

我認為 - 從查看輸出 - 您的問題是列表實際上不是列表。 data.list實際上是一個對象。 因此.each()將迭代各個項目(如list_id,title等)。 這些都沒有.action屬性。

我看不到任何動作屬性,所以我無法提出解決方案建議。 它可能在列表對象中 - 但你仍然把它當作一個數組(就像它的list: [{}, {}]而不是list: {} )。 在這種情況下,您需要修復返回的JSON或刪除$.each() ,並且只需要console.log(data.list.action)

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");

        }
);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM