2012-04-02 25 views
5

Tôi đang tìm kiếm cơ bản cho blog của mình và chức năng cơ bản đang hoạt động. Tuy nhiên, điều tôi đang tự hỏi là nếu bạn có thể trả về các biến ngữ cảnh trong một đáp ứng ajax, thì nó có thể được truy cập trong khuôn mẫu. Đây là tìm kiếm của tôi def:Biến ngữ cảnh Django và phản hồi 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') 

Điều này được yêu cầu thông qua 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 
    }); 
}); 

Những gì tôi đang muốn làm là vượt qua truy vấn biến, chứa đựng trong tìm kiếm def, trở lại chức năng jquery của tôi. Trong một câu trả lời http thông thường, bạn sẽ sử dụng các biến ngữ cảnh ... nhưng tôi không chắc làm thế nào những biến đó có thể được chuyển qua với jQuery.

Trả lời

3

Điều bạn có thể làm là chuyển từ điển trở lại cho HttpResponse thay vì chỉ kết quả.

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') 

Đảm bảo nhập json hoặc simplejson.

+0

Trông Jordan đầy hứa hẹn. Tôi sẽ thử khi tôi về nhà. – bento

Các vấn đề liên quan