Часть моего приложения принимает некоторые ингредиенты, а затем выплевывает соответствующие рецепты.Я пытаюсь преобразовать его, чтобы использовать только AJAX.У меня возникают проблемы с анализом данных, возвращающихся в JSON, и доступом к ним для использования на внешнем интерфейсе.
Мой код в Django views.py выглядит следующим образом:
recipes = Recipe.objects.all() #shortened to all objects for example purposes
import simplejson
data = ''
for r in recipes:
the_date = r.date_created.strftime("%b %d")
recipe_dict = { 'id' : r.id,
'name' : r.name,
'user' : r.user.username,
'date_created' : the_date,
'votes' : r.votes,
'slug' : r.slug }
data += simplejson.dumps(recipe_dict)+'\n'
return HttpResponse(data)
Мой javascript выглядит следующим образом:
//request an updated list of recipes with AJAX
$.get('/recipes/discover', { 'ingredients': ingredients },
//display these new relevant recipes
function(recipes){
$.each(recipes, function() {
$("#results").append("<li id='recipe-"+ this.id +"'>"+ this.name +"</li>");
})
})
.complete(function(){ $('#loading_spinner').fadeOut(1000); })
});
Вывод, который я получаю этим способом, заканчивается тем, что дает мне новый li для того, что кажется каждым символом ответа JSON ... так что .each()
проходит через каждый символ.
Я также пытался использовать jQuery.parseJSON(data);
перед запуском каждого, но, похоже, это работает, только когда возвращен только один рецепт JSON.Я думаю, что у меня что-то неправильно отформатировано в JSON, или я его неправильно анализирую?
Заранее спасибо!