2012-02-27 12 views
5

CURAottenere i dati di ritorno da Django views.py e utilizzando AJAX per visualizzare lo

Sto cercando di utilizzare jQuery/AJAX per visualizzare i dati restituiti da un metodo Django.

Ho un pulsante html chiamato parola chiave Btn. Quindi, quando viene premuto, verrà chiamato il metodo updateKeywordSubscribed.

tuttavia, il mio oggetto non viene restituito da Django. C'è qualcosa di sbagliato nel mio metodo?

In caso di successo, il nome della sezione div "aggiornamento" mostrerà l'elenco di parole in quella lista json.

quello che ho nel mio html:

<script type="text/javascript"> 
     $(document).ready(function() { 
      $("#keywordBtn").click(function(e) { 
       updateKeywordSubscribed(e, "#keywords"); 
      }); 
     }); 
     function updateKeywordSubscribed(e, keywords) { 
      e.preventDefault(); 
      var option_form = jQuery(e.target); 
      $.ajax({ 
       url : option_form.attr('action'), 
       type : option_form.attr('method'), 
       data : option_form.serialize(), 
       dataType : 'json', 
       success : function(response) { alert ('sometext')}) 
     } 
</script> 

quello che ho nel mio views.py:

def keyword_subscribe(request): 
    if 'keyword_input' in request.POST: 
    if 'name_input' in request.POST: 
     xhr = request.GET.has_key('xhr') 
     response_dict = {} 
      new_keyword = request.POST['keyword_input'] 
     username = request.POST['name_input'] 
     response_dict.update({'keyword_input': new_keyword, 'name_input': username}) 
     power_keyword = subscribe_keyword(username,keywords) 
     if power_keyword: 
      response_dict.update({'success':True}) 
     else: 
      response_dict.update({'errors':{}}) 
      if not username: 
         response_dict['errors'].update({'name_input': 'User ID is required'}) 
       if not total and total is not False: 
         response_dict['errors'].update({'keyword_input': 'Keyword field is blank'}) 
     if xhr: 
       return HttpResponse(simplejson.dumps(response_dict), mimetype='application/javascript') 
      return render_to_response('r2/userprofile_list.html', response_dict) 
+0

ho appena bisogno di capire come jquery legge quei dati da views.py. Il resto sarò in grado di riempirlo. –

risposta

12

che sto facendo qualcosa di simile a ciò che è necessario nel mio progetto attuale.

ho questa visione codice postale, che restituisce un risultato GeoJSON o null

mio punto di vista:

def get_zipcode(request, latitude, longitude): 
    # Point on a map 
    point = GEOSGeometry('POINT(%s %s)' % (longitude, latitude)) 

    try : 
     zipcodes = Zipcode.objects.filter(mpoly__contains=point) 
     return HttpResponse(zipcodes[0].mpoly.geojson, mimetype="application/json") 
    except : 
     return HttpResponse(json.dumps(None), mimetype="application/json") 

mio tipo MIME è application/json non application/javascript

miei URL:

url(r'^collision/zipcode/(?P<latitude>(\-|)\d+\.\d+)/(?P<longitude>(\-|)\d+\.\d+)/', 'core.views.get_zipcode', name='collision-zipcode'), 

Il JS che effettua la chiamata e gestisce il risultato JSON

$.ajax({ 
    url : '/collision/zipcode/' + latitude + '/' + longitude + '/', 
    dataType : 'json', 
    type : 'GET', 
    success: function(data) 
    { 
     var paths = coord_to_paths(data.coordinates); 
     var polygon = new google.maps.Polygon({ 
      paths : paths, 
      strokeColor : "#FF7800", 
      strokeOpacity : 1, 
      strokeWeight : 2, 
      fillColor : "#FF7800", 
      fillOpacity : 0.6 
     }); 

     polygon.setMap(map); 

     console.log("adding zipcode polygon"); 
    } 
}); 

nota che se si sta facendo il recupero di JSON, se si imposta il tipo di dati a 'json', si dovrebbe essere andare a dati di accesso nella vostra funzione successo come un nativo JS.

se è necessario eseguire il debug quali dati viene effettivamente recuperato da jQuery, fare un

console.log(data);
e guardare nella vostra console dev w/i browser (Chrome/ff Non so se gli altri browser supportano questo)

+0

Wow Francis, buona risposta, puoi aiutarmi a vedere l'immagine in quale parte della funzione di successo sono i dati che vengono trasmessi dalle viste? –

+0

sono i dati variabili? –

+0

nel mio esempio la mia funzione di successo ajax accetta un singolo "dato" param che è la risposta JSON. sembra che la tua funzione di successo ajax la chiami risposta. dovresti console.log per vedere cosa stai ricevendo. se dovessi indovinare, c'è qualcosa che non va nella tua opinione e non sta tornando a buon fine, quindi la tua funzione di successo non sa cosa farne. –

Problemi correlati