我对AJAX缺乏经验,但对Django很满意。我正在尝试编写一个简单的搜索页面,它使用jQuery来获取匹配的结果,并使用jQuery加载将它们插入到页面中,如下所示:
$("#results").load(targetURL)
不使用AJAX,我会使用模板迭代格式化从视图返回的结果查询集。使用AJAX,我无法使用模板格式化结果。我目前的解决方案是在视图中将结果格式化为HTML,并从AJAX视图返回此HTML,然后由jQuery加载。
### AJAX View
def myview(request):
matches = model.objects.filter(type__exact="thisType")
results_html = ""
for each in matches:
results_html += "<tr><td> each.name </td></tr>"
return HttpResponse(results_html)
我应该返回查询集的json转储吗?如果是这样,关于如何处理/格式化这个返回的json的任何提示?
答案 0 :(得分:1)
如果您使用json转储进行响应,那么您可以在js中处理它:
$.get(targetURL).done(function(data) {
$.each(data, function(i,d) {
$("#results").append($("<tr><td>" + d.name + "</td></tr>"));
});
});
或者像这样:
$.get(targetURL).done(function(data) {
$("#results").append(data.map(function(i,d) {
return $("<tr><td>" + d.name + "</td></tr>");
}));
});