2012-04-02 11 views
5

Sto lavorando a una ricerca di base per il mio blog e la funzionalità di base è attiva e funzionante. Quello che mi chiedo, tuttavia, è se è possibile restituire variabili di contesto in una risposta ajax, a cui si potrebbe accedere nel modello. Ecco la mia ricerca def:Variabili di contesto di Django e risposta 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') 

Questo è richiesto tramite 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 
    }); 
}); 

Quello che sto volendo fare è passare il interrogazione variabile, contenuta in cerca DEF, di nuovo alla mia funzione di jQuery. In una normale risposta http, dovresti usare le variabili di contesto ... ma non sono sicuro di come possano essere passati con jQuery.

risposta

3

Quello che puoi fare è passare un dizionario al tuo HttpResponse invece dei soli risultati.

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

Assicurarsi di importare json o simplejson.

+0

Sembra promettente Jordan. Ci proverò quando torno a casa. – bento