JSON aus POST-Requests mittels Jquery

Gerade eben bin ich bei der Überarbeitung meines O2 Traffic Kalkulators auf ein interessantes Problem im Zusammenhang mit Jquery gestoßen. Ich sende die Daten aus dem Formular mittels eines POST-Requests an den Server, der mir derzeit einen einfachen String zurück gibt. Für die graphische Verarbeitung benötige ich jedoch die Trafficdaten der einzelnen Tage, was am einfachsten als JSON übermittelt wird. Wie die Dokumentation zeigt, gibt es eine getJson-Methode (Verarbeitung von JSON nach GET-Anfragen), jedoch leider keine postJSON-Methode. Es gibt aber einen kleinen Workaround.

Werbung


Ich verwende derzeit den jQuery.ajax Aufruf zum Absenden des Formulars, welcher mit einigen Optionen versehen werden kann. Darunter befindet sich die Eigenschaft „dataType„, die mit dem Setzen auf json oder jsonp bewirkt, dass die Rückgabedaten als JSON verarbeitet werden.
Kleines Beispiel:

function postJSON(paramUrl,paramData,paramBeforeSend,paramSuccess,paramError){
	$.ajax({
		type:"POST",
		url:paramUrl,
		data:paramData,
		dataType:"json",
		beforeSend:paramBeforeSend,
		success:paramSuccess,
		error:paramError});
	}

Der Zugriff auf das JSON-Objekt erfolgt nun wie gewohnt:
someJsonSource gibt folgendes zurück: ({"title": "foo","items": [{"title": "bar"},{"title": "baz"},{"title": "quux"}]})

$.ajax({
	type:"POST",
	url:"someJsonSource.php",
	data:"foo=bar",
	dataType:"json",
	success:function(data){
          $.each(data.items, function(i,item){
            $("body").append(item.title);
          });
        }});
}

Herauskommen sollte dann „barbazquux

Veröffentlicht von

Uli

Uli ist ein begeisterter Blogger mit Hang zur IT. Mit verschiedenen Beiträgen stellt er Gadgets vor, bringt den Lesern IT nahe und zeigt seine Photos dem Netz.

5 Gedanken zu „JSON aus POST-Requests mittels Jquery“

  1. Hä ? Wo sendest du in dem Beispiel JSON-Daten?

    Mir ist auch aufgefallen, das jQuery dies nicht anbietet, aber dein Beispiel ist ja auch komplett daneben?

    Ich hätte erwartet, das du deine paramData nicht von Hand url-kodierst, sondern von einer json.stringify-methide machen läßt!

    Völlig verwirrt verlasse ist diese Seite …

    1. Wie mir scheint hast du den Sinn des Posts nicht verstanden 😛 Ja, jQuery bietet dies nicht an, darum hab ich es ja geschrieben, damit es funktioniert. Meine Json-Source ist in diesem Fall eine PHP-Webseite und (nur um nochmal drauf aufmerksam zu machen) ist hier nicht als Datenquelle festgelegt.

      Der letzte Code-Block dient im übrigen als Beispiel.

  2. Hallo,

    der Post ist zwar schon etwas länger her aber dennoch muss ich mal meinen Send dazu geben.
    Anstatt wie Wingi einfach mal trollen aber bloß keine alternative bzw. Erklärung abgeben will ich mal meinen Senf dazu geben.
    Also laut jquery doku : http://api.jquery.com/jQuery.ajax/
    hast du das vollkommen richtig gemacht.
    Übersichtlicher ist es jedoch wenn die POST werte so übergeben werden:

    data:{
    produkt_1ST: produkt_1ST,
    reason_1ST: reason_1ST,
    solution_1ST: solution_1ST,
    produkt_2ND: produkt_2ND,
    reason_2ND: reason_2ND,
    solution_2ND: solution_2ND

    }

    Gruß
    Marcus

  3. Da die Seite relativ weit oben in den Suchergebnissen steht, will ich nur kurz korrigieren, dass es durchaus eine POST Möglichkeit mit JSON gibt.


    data = { "name": "michi124" }; // Daten die per POST übergeben werden
    jQuery.post("test.php", data,
    function(JSON){ // Antwortvariable kann belibig benannt werden
    alert(JSON.vorname+' '+JSON.nachname);
    // per PHP mit json_encode verschlüsseltes Array
    // Antwortstring {"vorname":"michael","nachname":"Mittermeyer"}
    }, "json"); // Hier wird das Rückgabeformat auf JSON umgestellt
    siehe jQuery.post

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind markiert *