2012-04-02 42 views
5

我正在为我的博客进行基本搜索,并且基本功能已启动并正在运行。但是,我想知道的是,如果您可以在ajax响应中返回上下文变量,然后可以在模板中访问它们。这是我的搜索def:Django上下文变量和ajax响应

from django.http import HttpResponse 
from django.db.models import Q 
from django.core import serializers 

def search(request): 
    if request.is_ajax(): 
     query = request.POST['query'] 
     text_list = Text.objects.filter(Q(title__icontains=query) | Q(mytextfield__icontains=query)) 
     data = serializers.serialize("json", text_list) 
    else: 
     data = "whoops" 
    return HttpResponse(data,'application/javascript') 

这是通过jquery要求。

$(document).ready(function() { 
    $('#search').submit(function(){ 
     $.post("/search/search/", $("#search").serialize(), function(data){ 
      // Search results for: **query** 
      $.each(data, function(index){ 
       $(ajax).append(data[index].fields.title + "<br>"); 
      }); 
     }, "json"); 
     return false 
    }); 
}); 

什么,我想要做的是通过查询变量,包含在高清搜索,回到我的jQuery函数。在常规的http响应中,你会使用上下文变量......但我不确定这些可以通过jQuery传递。

回答

3

你可以做的是将字典传回给你的HttpResponse而不仅仅是结果。

data = { 
    'query': request.POST['query'], 
    'results': serializers.serialize("json", Text.objects.filter(Q(title__icontains=query) | Q(mytextfield__icontains=query))) 
} 

return HttpResponse(json.dumps(data), 'application/javascript') 

确保导入json或simplejson。

+0

看起来很有前途的乔丹。当我回家时我会尝试。 – bento 2012-04-02 18:51:23