Antworten auf deine Fragen:
Neues Thema erstellen

PHP -> jQuery mehrdimensionalen array übergeben

AxelM

Nicht mehr ganz neu hier

Ich habe einen PHP Array gebaut.
PHP:
$rtn = array(
            "standard" => array(
                "pr" => array(
                    "id" => "id1",
                    "gesamtPreis" => "890.40",
                    "preisPph" => "89.04",
                    "rate" => "74.20",
                    "lieferkosten" => "29.30"
                ),
                "80" => array(
                    "id" => "id2",
                    "gesamtPreis" => "890.40",
                    "preisPph" => "89.04",
                    "rate" => "74.20",
                    "lieferkosten" => "29.30"
                ),
                "120" => array(
                    "id" => "id3",
                    "gesamtPreis" => "890.40",
                    "preisPph" => "89.04",
                    "rate" => "74.20",
                    "lieferkosten" => "29.30"
                ),
                "180" => array(
                    "id" => "id4",
                    "gesamtPreis" => "890.40",
                    "preisPph" => "89.04",
                    "rate" => "74.20",
                    "lieferkosten" => "29.30"
                )
            ),
            "premium" => array(
                "pr" => array(
                    "id" => "id5",
                    "gesamtPreis" => "890.40",
                    "preisPph" => "89.04",
                    "rate" => "74.20",
                    "lieferkosten" => "29.30"
                ),
                "80" => array(
                    "id" => "id6",
                    "gesamtPreis" => "890.40",
                    "preisPph" => "89.04",
                    "rate" => "74.20",
                    "lieferkosten" => "29.30"
                ),
                "120" => array(
                    "id" => "id7",
                    "gesamtPreis" => "890.40",
                    "preisPph" => "89.04",
                    "rate" => "74.20",
                    "lieferkosten" => "29.30"
                ),
                "180" => array(
                    "id" => "id8",
                    "gesamtPreis" => "890.40",
                    "preisPph" => "89.04",
                    "rate" => "74.20",
                    "lieferkosten" => "29.30"
                )
            ),
            "bio" => array(
                "pr" => array(
                    "id" => "id9",
                    "gesamtPreis" => "890.40",
                    "preisPph" => "89.04",
                    "rate" => "74.20",
                    "lieferkosten" => "29.30"
                ),
                "80" => array(
                    "id" => "id10",
                    "gesamtPreis" => "890.40",
                    "preisPph" => "89.04",
                    "rate" => "74.20",
                    "lieferkosten" => "29.30"
                ),
                "120" => array(
                    "id" => "id11",
                    "gesamtPreis" => "890.40",
                    "preisPph" => "89.04",
                    "rate" => "74.20",
                    "lieferkosten" => "29.30"
                ),
                "180" => array(
                    "id" => "id12",
                    "gesamtPreis" => "890.40",
                    "preisPph" => "89.04",
                    "rate" => "74.20",
                    "lieferkosten" => "29.30"
                )
            )
        );
Den würde ich gerne als JSON an jQuery übergeben.
das tu ich mit json_encode($rtn)
ich würde gern mit jQuery auf die einzelnen Felder zugreifen.

Wie komme ich nun an das Feld $rtn['bio']['180']['gesamtPreis']?
Danke schon mal für eure Antworten.
 

hub

nicht ganz neu hier

Moin,
dazu brauchst du kein jQuery, oder vielleicht um dein Json-String unkompliziert per Ajax zu holen. Wie du die Daten an JS übergibst, davon hängt der nächste schritt ab, also ob du mit javascript noch decodieren musst oder nicht.
Nach der Diskussion vorhin weiss ich nicht, wegen einem Link :D Aber schau mal in der jQuery-API nach "jQuery.getJSON()" ...
In JS ist das ganze dann ein Objekt, also bekommst du:
$rtn['bio']['180']['gesamtPreis']
mit
Javascript:
var test =  deine_var.bio.180.gesamtPreis;

Gruß Ulli
 

AxelM

Nicht mehr ganz neu hier

Das geht so nicht.
ich habe es jetzt ein wenig umgebaut, um eine Analogie zu etwas zu bauen, was schonmal getan hat.
dabei kommt folgender string per ajax rein:
Code:
{"1010101":703,"1010104":0,"1010102":0,"1010105":"39.20","1010106":"1000","1010103":"278","1010201":703,"1010204":0,"1010202":0,"1010205":"39.20","1010206":"1000","1010203":"278","1010301":703,"1010304":0,"1010302":0,"1010305":"39.20","1010306":"1000","1010303":"278","1010401":703,"1010404":0,"1010402":0,"1010405":"39.20","1010406":"1000","1010403":"278","1020101":989.2,"1020104":0,"1020102":0,"1020105":"39.20","1020106":"1000","1020103":"279","1020201":989.2,"1020204":0,"1020202":0,"1020205":"39.20","1020206":"1000","1020203":"279","1020301":989.2,"1020304":0,"1020302":0,"1020305":"39.20","1020306":"1000","1020303":"279","1020401":989.2,"1020404":0,"1020402":0,"1020405":"39.20","1020406":"1000","1020403":"279","1030101":1029.2,"1030104":0,"1030102":0,"1030105":"39.20","1030106":"1000","1030103":"280","1030201":1029.2,"1030204":0,"1030202":0,"1030205":"39.20","1030206":"1000","1030203":"280","1030301":1029.2,"1030304":0,"1030302":0,"1030305":"39.20","1030306":"1000","1030303":"280","1030401":1029.2,"1030404":0,"1030402":0,"1030405":"39.20","1030406":"1000","1030403":"280"}0
Erzeugt wird dieser string serverseitig durch json_encode($array);
Es handelt sich dabei um einen eindimensionalen array.
Das Ajax wird mit folgender Funktion ausgeführt:
Javascript:
jQuery.ajax({
        type: 'POST',
        url: topangebot_ajax_001.ajaxurl,
        data: {
            action: 'pr_get_prices',
            plz: jQuery('#plz').val() || 0,
            flat_plz: jQuery('#flat_plz').val() || 0,
            menge: jQuery('#selectedAmount').val() || 0,
            lieferzeit: jQuery('input[name=deliverymethod]:checked').val(),
            tankwagen: jQuery('input[name=tankwagentype]:checked').val(),
            schlauch: jQuery('input[name=pipelinelength]:checked').val(),
            zahlart: jQuery('input[name=paymentmethod]:checked').val()
        },
        success: function (data, textStatus, XMLHttpRequest) {
            // data = JSON.parse(data);
            alert(data['1010101']);
            setData(data);
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
            alert(errorThrown);
        }
    });

alert(data['1010101']); gibt undefined zurück.

warum?
 

hub

nicht ganz neu hier

Nun ja, nach deinen vorherigen Angaben stimmt das schon. Aber offenbar hast du noch Code dazwischen, dessen Funktion und Ausgabe zu erraten mir unmögich erscheint.
Oder du hast deine Frage falsch formuliert?

Gruß Ulli
 

AxelM

Nicht mehr ganz neu hier

ICh hab den ehemals mehrdimensionalen Array in einen eindimensionalen(und lange nicht mehr so schönen) Array umgebaut. und ich hab die Keys numerisch gebaut.
Das ist jetzt zwar nicht mehr so schön zu handlen, aber ich habe sowas bei ner Postleitzahlensuche schon mal realisiert.

Ich denke zwar, dass ich den Weg des Array vollständig dargestellt habe, aber die ganzen Ausmaße der Katastrophe kannst du hier sehen:
http://stoffmehl.brennstoff24.net/topangebot/
 

hub

nicht ganz neu hier

Ok, dein Problem ist, das du jQuerys Ajax nicht mitteilst, das du als Antwort json erwartest ( dataType: "json" ) . So wird das ganze als String interpretiert, den du selber parsen musst.
Schau mal bei http://api.jquery.com/jQuery.ajax/ nacht "dataType" ...

Wenn du das eine oder das andere machst, klappt das auch mit deiner vorherigen Struktur.

Gruß Ulli
 

hub

nicht ganz neu hier

moin,
kein Wunder! Die letzten Zeichen deines Strings (sagt auch deine Meldung :)):
Code:
1030405":"39.20","1030406":"1000","1030403":"280"}0
Mit der letzten Klammer, ob geschweift oder eckig, ist für Json der String zu Ende ... Die 0 danach, musst schauen, wo sie her kommt und sie eliminieren.

Gruß Ulli
 

hub

nicht ganz neu hier

Na ja, die null ist nicht sooo unbedeutend wenn sie am richtigen Ende steht. Darum gibt es in Dt ja schon 2 Ausführungen: eine schwarze und eine rote 0. Das kommentiere ich aber besser nicht :D . Also viel spaß noch!
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Keine Mitglieder online.

Statistik des Forums

Themen
118.635
Beiträge
1.538.449
Mitglieder
67.556
Neuestes Mitglied
Ggirl
Oben