BlackBoard » Design, Programmierung & Entwicklung » Programmieren » Javascript: JSON per HTTP an Server schicken. » Hallo Gast [Anmelden|Registrieren]
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | An Freund senden | Thema zu Favoriten hinzufügen
Neues Thema erstellen Antwort erstellen
Zum Ende der Seite springen Javascript: JSON per HTTP an Server schicken.
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
phlox81 phlox81 ist männlich
Bote des Lichts und Moderator


images/avatars/avatar-2264.jpg

Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo

Javascript: JSON per HTTP an Server schicken.       Zum Anfang der Seite springen

Hallo, habe mir einen kleinen Server gebastelt, welcher auf port 80, localhost läuft.

Versuche nun per JS da JSON daten über HTTP hinzuschicken, aber meine Versuche wollen nicht so richtig funktionieren, und irgendwie hab ich auch keine große Ahnung was ich da genau tue großes Grinsen

Mein Code:
code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
  <title></title>
  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
   <script type="text/javascript" src="http://www.json.org/json2.js"></script>
   <script type="text/javascript">
     $(function() {
       var frm = $(document.myform);
       var dat = JSON.stringify(frm.serializeArray());

       //alert("I am about to POST this:\n\n" + dat);

       $.post(
         frm.attr("action"),
         dat,
         function(data) {
           //alert("Response: " + data);
         }
       );
     });
   </script>

  </head>
  <body>
<form action="http://127.0.0.1" method="get" name="myform">
<input name="firstName" value="harry" />
<input name="lastName" value="tester" />
<input name="toEmail" value="testtest@test.com" />
</form>

  </body>
</html>


Ich bekomme beim Server aber nur den HTTP Header zu sehen, wenn ich es mit get sende, stehen die JSON Daten zwar drin, aber als erstes, und nicht nach dem Header, wie ich es gerne hätte.

Auch ist das HTTP nicht sauber, steht doch da irgendwo her OPTIONS:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
handle read_header: OPTIONS / HTTP/1.1
Host: 127.0.0.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.1.3) Gecko/20090
824 Firefox/3.5.3 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Origin: null
Access-Control-Request-Method: POST
Access-Control-Request-Headers: x-requested-with


An diesen HTTP Header würde ich gerne die Daten anhängen, wie geht dies in JS?
Würde dies später auch gerne mit JQuery.JSONRequest/getJSON machen, habe aber da auch noch nicht herausgefunden wie ich es korrekt verwenden kann.

Wie geht das korrekt in JS? (bin totaler JS Analphabet großes Grinsen )

phlox

__________________
Intelligenz ist eine Illusion des Menschen

phlox81.de | codenode.de
05.04.2010 01:05 phlox81 ist offline E-Mail an phlox81 senden Homepage von phlox81 Beiträge von phlox81 suchen
Misel Misel ist männlich
Hüter des Kitkat


images/avatars/avatar-2084.png

Dabei seit: 02.11.2002
Beiträge: 1.203
Herkunft: live://home.berlin.d e

      Zum Anfang der Seite springen

Schon mal per POST probiert?

__________________
LAUFT! Ich spiele KILLERSPIELE!
05.04.2010 12:56 Misel ist offline E-Mail an Misel senden Homepage von Misel Beiträge von Misel suchen
phlox81 phlox81 ist männlich
Bote des Lichts und Moderator


images/avatars/avatar-2264.jpg

Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo

Themenstarter Thema begonnen von phlox81
      Zum Anfang der Seite springen

Das beispiel da oben ist doch post.
Per getJSON läuft es jetzt über JQuery, nur das das JSON dann halt teil des Headers ist, und es keinen body gibt.

__________________
Intelligenz ist eine Illusion des Menschen

phlox81.de | codenode.de
05.04.2010 14:47 phlox81 ist offline E-Mail an phlox81 senden Homepage von phlox81 Beiträge von phlox81 suchen
Zirias Zirias ist männlich
BlackBoarder


images/avatars/avatar-450.jpg

Dabei seit: 11.09.2002
Beiträge: 1.217
Herkunft: /dev/urandom

      Zum Anfang der Seite springen

Ohne genau zu wissen um was es geht und wenn die Serialisierung in JSON nicht das Problem ist: dem value eines form-elements zuweisen und form.submit() sollte es doch tun smile

__________________
palmen-it.de
GCS/MU d+(++) s+: a C++ UL++++ P+++$ L+++ !E W+++ N+ o? K? w++$ !O M-- V?
PS+ PE++ Y+ PGP++ t !5 X- R- tv b+ DI++ D+ G e++ h r y+
08.04.2010 17:47 Zirias ist offline Homepage von Zirias Beiträge von Zirias suchen
phlox81 phlox81 ist männlich
Bote des Lichts und Moderator


images/avatars/avatar-2264.jpg

Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo

Themenstarter Thema begonnen von phlox81
      Zum Anfang der Seite springen

Nee, JSON ist mandatory.
Natürlich wäre es auch gut mal einfach einen normalen POST Request einfach so zu loggen, um zu sehen wie das z.b. von Firefox aussieht.

__________________
Intelligenz ist eine Illusion des Menschen

phlox81.de | codenode.de
09.04.2010 23:05 phlox81 ist offline E-Mail an phlox81 senden Homepage von phlox81 Beiträge von phlox81 suchen
Zirias Zirias ist männlich
BlackBoarder


images/avatars/avatar-450.jpg

Dabei seit: 11.09.2002
Beiträge: 1.217
Herkunft: /dev/urandom

      Zum Anfang der Seite springen

Moment ... was genau du überträgst ist doch egal!
Wenn du dem Browser das übertragen überlässt (also per form.submit()) werden die inhalte der form-elemente als application/x-www-url-encoded im body des requests verschickt. wenn dann in einem feld daten im JSON format stehen, ist das wohl kein problem, die auch wieder zu extrahieren smile

Wenn du JSON unbedingt direkt im Body haben willst, sieht ein minimaler request so aus:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
POST [Resource-Pfad] HTTP/1.1
Host: [Hostname]
Content-Type: text/json
Content-Transfer-Encoding: 8bit
Content-Length: [größe des JSON in bytes]

{
    "test": {
        "foo": "bar"
    }
}


Den musst du dann wohl per XmlHttpRequest() Klasse loswerden...

edit: Wie ich sehe arbeitest du da mit irgendeinem Framework -- das ich allerdings nicht kenne. Vielleicht hilft als Beispiel für einen POST-Request (sendet in meinem Fall allerdings application/x-www-form-urlencoded) in javascript mein alter "web 2.0" (*fg*) formmailer:
http://palmen-it.de/script/formmail.js

Der interessante Code beginnt ab dem Kommentar "// POST in asynchronous mode:"

__________________
palmen-it.de
GCS/MU d+(++) s+: a C++ UL++++ P+++$ L+++ !E W+++ N+ o? K? w++$ !O M-- V?
PS+ PE++ Y+ PGP++ t !5 X- R- tv b+ DI++ D+ G e++ h r y+

Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von Zirias: 10.04.2010 10:57.

10.04.2010 10:44 Zirias ist offline Homepage von Zirias Beiträge von Zirias suchen
phlox81 phlox81 ist männlich
Bote des Lichts und Moderator


images/avatars/avatar-2264.jpg

Dabei seit: 19.10.2002
Beiträge: 3.028
Herkunft: Irgendwo im Nirgendwo

Themenstarter Thema begonnen von phlox81
      Zum Anfang der Seite springen

Danke, aber das JS interessiert mich dabei nur marginal, schreibe ja eher den Serverpart.
Mir gehts deshalb auch darum das ganze mit jquery zu machen, weil dieses Framework im Webentwicklungsbereich recht verbreitet ist.

Momentan habe ich eine Version, die erstmal zum Testen ausreicht, einen HTTP Parser muss ich dann wohl irgendwann noch dazu machen oder anderswo her einbauen.

__________________
Intelligenz ist eine Illusion des Menschen

phlox81.de | codenode.de
10.04.2010 22:24 phlox81 ist offline E-Mail an phlox81 senden Homepage von phlox81 Beiträge von phlox81 suchen
Zirias Zirias ist männlich
BlackBoarder


images/avatars/avatar-450.jpg

Dabei seit: 11.09.2002
Beiträge: 1.217
Herkunft: /dev/urandom

      Zum Anfang der Seite springen

Ok, also ich glaube ich kapiere einfach nicht, was du erreichen willst. Die Daten in deinem kurzen Beispiel-HTML-Form in JSON serialisieren und zum Server schicken?

Warum? :o Alle Welt schickt Formulardaten in application/x-www-urlencodet, das verstehen auch alle serverseitigen Framworks. Aber WENN es unbedingt JSON sein soll, musst du wohl erstmal die Daten mit einer Schleife über die form-Elemente "einsammeln".

Normalerweise verwendet man JSON für den umgekehrten Weg, vom Server zum Client.

__________________
palmen-it.de
GCS/MU d+(++) s+: a C++ UL++++ P+++$ L+++ !E W+++ N+ o? K? w++$ !O M-- V?
PS+ PE++ Y+ PGP++ t !5 X- R- tv b+ DI++ D+ G e++ h r y+
11.04.2010 09:45 Zirias ist offline Homepage von Zirias Beiträge von Zirias suchen
Baumstruktur | Brettstruktur
Gehe zu:
Neues Thema erstellen Antwort erstellen
BlackBoard » Design, Programmierung & Entwicklung » Programmieren » Javascript: JSON per HTTP an Server schicken.

Forensoftware: Burning Board 2.3.6, entwickelt von WoltLab GmbH