2012-04-02 74 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