我遇到了将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