我遇到了將AJAX響應渲染爲JSRender模板的問題。JSRender未顯示JSON對象的值
我正在進行$ .getJSON調用,併成功調用render(data)函數 我使用console.log確保從$ .getJSON調用收到的數據是正確的。
function createNewsPage(event){
console.log("inside createNewsPage. Event Target: "+ $(event.target).text());
$.getJSON("http://query.yahooapis.com/v1/public/yql?q=xyzhere"L,
{
cache: "true",
dataType: "json"
},
function(data) {insertContent(data);}
);
event.stopPropagation();
event.preventDefault();
$("#listviewNews").collapsibleset('refresh');
return false;
}
function insertContent(resp){
console.log("---data received:\n" + JSON.stringify(resp));
$("#insertedContent").html(
$("#newsTemplate").render(resp)
).trigger('create');
}
我沒有得到任何錯誤回報,但是當模板被渲染它顯示的字[對象],而不是JSON有效載荷的實際文本內容。
任何想法爲什麼發生這種情況,或者如何顯示json對象的文本(字符串)而不是僅僅說[object]?
這裏是stringfied響應(正常RSS提要):
{
"query": {
"count": 3,
"created": "2013-03-29T16:12:49Z"
},
"results": {
"item": [
{
"title": "BracketRacket: A quiz, a thought and Peeps"
},
{
"title": "Correction: Mandatory Gun Ownership story"
},
{
"title": "Clashes erupt in 2 cities in northern Egypt"
}
]
}
}
}
請注意,發送到jsrenderer的數據必須是數組,而不是JSON對象。你能提供字符串化的迴應嗎? – dugokontov
在問題 – sporting
中提供了字符串化的響應不,它可以是一個對象。但它呈現的內容取決於你的#newsTemplate的外觀。在模板中,如果'表達式'返回一個對象,'someObject,{{:expression}}不會對該對象進行字符串化,它實際上將呈現someObject.toString()。 – BorisMoore