2009-02-21 12 views
25

Ich habe einen HTML-Code:jQuery.getJSON löst keinen Rückruf

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

und entsprechende Ansicht:

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

Die Ansicht ausgeführt wird (getestet unter Verwendung print) json Variable initialisiert wird, aber Keine Warnung erscheint. Was habe ich falsch gemacht? Ich habe schon einige Dokumente zu diesem Thema gesehen (http://docs.jquery.com/Ajax/jQuery.getJSON#urldatacallback zum Beispiel), aber ich habe keine Antwort gefunden.

EDIT: Das Problem war, dass HttpResponse wurde nicht importiert ... Leider gab Django keinen Fehler darüber. Alles andere war richtig. Grüße chriss

+0

Haben Sie gesichert und versucht es als Klartext nur für Tritte? – Sampson

Antwort

47

Es ist wahrscheinlich, dass der JSON nicht ordnungsgemäß gebildet wird. Manchmal passiert mir das, wenn mein Code, der json erzeugen soll, einen Fehler erzeugt. Zwei Optionen:

  • Verwenden firebug die JSON-Antwort anzuzeigen

  • Setup-Fehler in der jQuery-Code Umgang mit den jQuery.ajaxSetup Optionen wie:

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

die Verwendung von Fehlerbehandlung für das Debuggen ist großartig, da Sie sofort wissen, wenn ein Problem mit Ihrer Antwort vorliegt. Sie können die jQuery documentation for jQuery.ajax überprüfen, die alle verfügbaren Optionen für jQuery.ajaxSetup enthält.

BEARBEITEN: Eine dritte Option wäre, nur die URL zu öffnen, die den JSON generieren sollte, und die Ausgabe über JSON Lint auszuführen, um sie zu validieren.

+0

Kannst du mich darauf hinweisen oder erklären, wie man JSON mit FireBug überprüft? – chriss

+1

Sicher. Ich nehme an, dass Sie FireBug in FF installiert haben, lassen Sie es mich wissen, wenn Sie dies nicht tun. FireBug verfolgt Ihre gesamte Ajax-Anfrage auf der Registerkarte XHR. Erweitern Sie die Anfrage dort und klicken Sie auf die Registerkarte "Antwort". Sie sehen dort den JSON- oder anderen Antworttext. Viel Glück! – jonstjohn

+0

Sie müssen eine weitere geschweifte Klammer in dem von Ihnen bereitgestellten Code schließen. –

3

Sind Sie sicher, dass der JSON gültig ist? Werfen Sie einen Blick auf die Antwort direkt oder verwenden Sie Firebug

0

Ich glaube, Sie den nachgestellten $ in das URL-Muster fehlen.