JSONP-Webdienst mit Python

8

Ich schreibe eine AJAX-Funktion, die Daten von meinem JSON Python-Webservice anfordert. Meine AJAX-Anfrage sieht folgendermaßen aus:

%Vor%

Im Moment hat mein Python-Webservice eine Funktion, die die Anfrage an '/ blah' mit der folgenden return-Anweisung behandelt:

%Vor%

Meine AJAX-Funktion ruft eine Antwort von meinem Python-Webservice nicht erfolgreich ab, aber ich erhalte keine Fehler in Firebug. Was macht mein Webservice oder Javascript falsch?

    
Michael 20.07.2012, 07:32
quelle

4 Antworten

9

Was passiert, wenn Sie den JSONP-Datentyp von Jquery verwenden, ist, dass ein Rückruffunktionsname als GET-Parameter als Teil Ihrer URL gesendet wird, sodass Sie tatsächlich etwas wie "http: // localhost: 8001 / blah? Callback" abfragen = json125348274839 ".

Ihre Antwort von Ihrem Webserver sollte wie folgt aussehen:

%Vor%

Ihr Webserver wird also etwas wie "json125348274839 ({'a': 1, 'b': 2})"

zurückgeben

Hoffe das hilft!

    
Zach 20.07.2012, 07:57
quelle
6

Zack hat es verstanden. Mein Javascript war korrekt. Ich habe meine Python-Return-Anweisung wie folgt geändert:

%Vor%     
Michael 22.07.2012 19:16
quelle
1

Schalten Sie Ihren Python-Web-Service ein (oder fügen Sie ihn hinzu). Überprüfen Sie Ihre Webserver-Protokolle ... erhalten Sie die Anfrage von Ihrem Javascript-Client? Protokolliert Ihr Webserver, dass er eine Antwort zurückgibt?

Möglicherweise hängt es vom Rahmen ab, den Sie verwenden. Ist es so einfach wie eine Zeichenfolge aus der Handler-Funktion zurückzugeben? Vielleicht sollte der Handler eine Liste von Strings zurückgeben, und da er keine Liste erhält, gibt er dem Client nichts zurück. Suchen Sie in Ihren Webserverprotokollen nach Fehlern.

    
mhawke 20.07.2012 07:50
quelle
1

Sie haben Zitat und Semikolon in der ersten Zeile vergessen =)

Wenn es nicht hilft, überprüfen Sie Folgendes:

  1. Listenelement
  2. Was verwendest du als Python-Dienst? Django, Flasche, noch etwas? Vielleicht können Sie Python-Code bereitstellen?
  3. Schauen Sie sich auch die Registerkarte "Net" Firebug an und, nachdem sichergestellt wurde, dass die Anfrage an "url" tatsächlich bearbeitet wird (nicht zurückgegeben 404 oder 50x Codes, aber 200), überprüfen Sie "Response" Unterregisterkarte.

Hoffe, das hilft!

    
Alex G.P. 20.07.2012 07:51
quelle

Tags und Links