Veröffentlichen Sie JSON in Python CGI

8

Ich habe Apache2 installiert und Python funktioniert.

Ich habe jedoch ein Problem. Ich habe zwei Seiten.

One eine Python-Seite und die andere eine HTML-Seite mit JQuery

Kann mir bitte jemand sagen, wie ich meine Ajax-Post richtig funktionieren lassen kann.

%Vor%

Und der Python-Code

%Vor%     
TheMonkeyMan 23.05.2012, 10:59
quelle

2 Antworten

9

OK, gehen wir zu Ihrer aktualisierten Frage.

Zuerst sollten Sie die Ajax-Dateneigenschaft in der Zeichenfolgendarstellung übergeben. Dann, da Sie die Eigenschaften dataType und contentType mischen, ändern Sie dataType value in "json" :

%Vor%

Ändern Sie abschließend Ihren Code ein wenig, um mit der JSON-Anfrage wie folgt zu arbeiten:

%Vor%

Als Ergebnis erhalten Sie im success -Handler der Ajax-Anfrage ein Objekt mit den Eigenschaften success und message .

    
VisioN 23.05.2012, 11:20
quelle
0

Sie sollten JSON-Daten wie folgt lesen:

%Vor%

Mit dem folgenden Code können Probleme auftreten:

%Vor%

oder weniger prägnant geschrieben:

%Vor%

Das funktioniert für mich, wenn mein cgi-Skript auf einem apache -Server ist, aber Sie können nicht darauf zählen, dass es im Allgemeinen funktioniert - wie ich herausfand, als mein CGI-Skript eingeschaltet war ein anderer Server. Gemäß der CGI-Spezifikation:

%Vor%

Die Schlüsselzeile lautet:

  

Das Skript darf NICHT versuchen, mehr zu lesen   als CONTENT_LENGTH Bytes, auch wenn mehr Daten verfügbar sind.

Offensichtlich sendet apache sofort nach dem Senden des Anfragetexts an das CGI-Skript ein eof-Signal an das CGI-Skript, wodurch sys.stdin.read() zurückkehrt. Aber nach der CGI-Spezifikation, ein Server ist nicht erforderlich, ein eof-Signal nach dem Körper der Anfrage zu senden, und ich fand, dass mein CGI-Skript auf sys.stdin.read() hängen - wenn mein Skript auf einem anderen Server war, was schließlich verursacht ein Zeitüberschreitungsfehler.

Um json-Daten im allgemeinen Fall einzulesen, sollten Sie folgendes tun:

%Vor%

Der Server setzt eine Reihe von Umgebungsvariablen für CGI-Skripte, die Header-Informationen enthalten, von denen eine CONTENT_LENGTH ist.

Hier sehen Sie, wie eine fehlgeschlagene Curl-Anfrage ausgesehen hat, als ich myjson = json.load(sys.stdin) verwendet habe:

%Vor% %Vor%     
7stud 09.03.2018 05:58
quelle

Tags und Links