2014-04-12 89 views
1

我正在嘗試通過Karl Swedburg爲Ajax學習jQuery第4版的練習,更具體地說是JSONP。使用.getJSON的JSONP返回undefined

我的代碼是

$(document).ready(function(){ 
var url='https://api.github.com/users/jquery/repos'; 
$.getJSON(url + '?callback=?',function(data){ 
    var content=''; 
    $.each(data,function(index,item){ 
    content +='<div class="userdata">'; 
    content +='<div class="username">'+item.id+'</div>'; 
    content +='<div class="username">'+item.name+'</div>'; 
    content +='<div class="userurl">'+item.url+'</div>'; 
    content +='</div>'; 
    }); 
    $('#dictionary').append(content); 

}); 
}); 

我已經簽了開發工具和我的請求返回狀態200

和數據的提取從請求返回的如下圖所示

{ 
    "id": 5999890, 
    "name": "2012-dev-summit", 
    "full_name": "jquery/2012-dev-summit", 
    //more stuff 
} 

我已經檢查並重新檢查了我的代碼,似乎無法弄清楚爲什麼它返回undefined。

編輯:添加什麼附加

undefined 
undefined 
undefined 
undefined 
undefined 
undefined 

我得到6 undefined,這將等同於2次迭代看到,因爲輸出每輪3個項目,即。 ID,名稱和網址。

回答

1

嘗試以下。您正在result.data對象中獲取結果。不在結果對象中。

$(document).ready(function(){ 
var url='https://api.github.com/users/jquery/repos'; 
$.getJSON(url + '?callback=?',function(result){ 
    var content=''; 
    var data = result.data; 
    $.each(data,function(index,item){ 
    content +='<div class="userdata">'; 
    content +='<div class="username">'+item.id+'</div>'; 
    content +='<div class="username">'+item.name+'</div>'; 
    content +='<div class="userurl">'+item.url+'</div>'; 
    content +='</div>'; 
    }); 
    $('#dictionary').append(content); 

}); 

});

FIDDLE

+0

您的代碼有效,但它爲什麼正常工作?即時通訊在result.data.object中獲取結果而不是result.object是什麼意思? –

+2

您直接在代碼(數據)中循環getJSON回調的結果。但是實際的數據存在於代碼中的data.data中,在我的code.data中。所以你需要遍歷result.data來訪問結果對象。希望能幫助到你。 –

0

試試這個

$(document).ready(function(){ 
var url='https://api.github.com/users/jquery/repos'; 
$.getJSON(url + '?callback',function(data){ 
    var content=''; 
    $.each(data,function(index,item){ 
    content +='<div class="userdata">'; 
    content +='<div class="username">'+item.id+'</div>'; 
    content +='<div class="username">'+item.name+'</div>'; 
    content +='<div class="userurl">'+item.url+'</div>'; 
    content +='</div>'; 
    }); 
    $('#dictionary').append(content); 

}); 
}); 

DEMO

+0

爲什麼改變?callback =? to?callback使它工作?從文檔中,它表示該字符串必須包含callback =?爲了它的工作,那麼爲什麼它會改變它使它在這種情況下工作? –