У меня возникли проблемы с ответом 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