2009-02-21 14 views
25

Ho un codice html:jQuery.getJSON non innescare richiamata

<button>asd</button> 
<script type = "text/javascript"> 
$('button').click(
    function() { 
     $.getJSON('/schedule/test/', function(json) { 
      alert('json: ' + json + ' ...'); 
     }); 
    } 
); 
</script> 

e vista corrispondente:

def test(request): 
    if request.method == 'GET': 
     json = simplejson.dumps('hello world!') 
     return HttpResponse(json, mimetype = 'application/json') 

viene eseguita la vista (testati utilizzando print), json variabile viene inizializzata ma non viene visualizzato alcun avviso. Che cosa ho fatto di sbagliato? Ho già visto alcuni documenti su questo (http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback per esempio) ma non ho trovato una risposta.

EDIT: Il problema era che il HttpResponse non è stato importato ... Sfortunatamente Django non ha dato alcun errore. Tutto il resto era corretto. saluti
chriss

+0

Hai eseguito il backup e provato come testo normale solo per i calci? – Sampson

risposta

47

È probabile che il JSON non sia formato correttamente. A volte capita a me quando il mio codice, che dovrebbe produrre JSON, sta generando un errore. Due opzioni:

  • Utilizzare Firebug per visualizzare la risposta JSON gestire nel codice jQuery utilizzando le opzioni jQuery.ajaxSetup quali errore di installazione

  • :

    $.ajaxSetup({"error":function(XMLHttpRequest,textStatus, errorThrown) { 
         alert(textStatus); 
         alert(errorThrown); 
         alert(XMLHttpRequest.responseText); 
        }}); 
    

Utilizzando la la gestione degli errori per il debugging è ottima, poiché saprai immediatamente quando c'è un problema con la tua risposta. Puoi dare un'occhiata allo jQuery documentation for jQuery.ajax che ha tutte le opzioni disponibili per jQuery.ajaxSetup.

MODIFICA: una terza opzione consiste semplicemente nell'aprire l'URL che dovrebbe generare il JSON ed eseguire l'output tramite JSON Lint per convalidarlo.

+0

Potresti indicarmi o spiegare come controllare JSON con FireBug? – chriss

+1

Sicuro. Suppongo che tu abbia installato FireBug in FF, fammi sapere se non lo fai. FireBug tiene traccia di tutte le tue richieste Ajax nella scheda XHR. Espandi la richiesta e fai clic sulla scheda "risposta". Vedrai il JSON o altro testo di risposta lì. In bocca al lupo! – jonstjohn

+0

È necessario chiudere un'altra parentesi graffa nel codice che hai fornito. –

3

Sei sicuro che il JSON sia valido? dai un'occhiata direttamente alla risposta o usa Firebug

0

penso che si manca il finale $ nel modello URL.

Problemi correlati