PHP-Array an JS übergeben

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • PHP-Array an JS übergeben

    Hallo, ich habe ein Formular-Arry...

    Quellcode

    1. <input name="permission[]" type="checkbox" value="$content_id_sub" />


    Das Array würde ich gerne an meine Ajax-Funktion übergeben, nur wird daraus leider nichts...

    Quellcode

    1. onsubmit="return changePermission(<?php echo $_GET['gredit'];?>, this.permission.value)">


    Hier gibts ein SyntayError:


    Quellcode

    1. onsubmit="return changePermission(<?php echo $_GET['gredit'];?>, this.permission[].value)">


    Ich habe auch probiert dem input eine id zu geben und dann via document.getElementById('').value zu übergeben leider erfolglos....

    Hat jemand eine Idee?

    Habe gelesen das man das irgendwie mit JSON machen kann..., aber so richtig hat mich das nicht überzeugt.

    so long

    JFoX
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisiert, die letzte Newsgroup moderiert wird, werdet Ihr merken, dass man mit Geld allein nicht programmieren kann.
  • Hi,

    warum willst du das komplette php array an ajax übergeben?

    warum verarbeitest du die daten nicht mit php weiter?

    afaik geht das wirklich mit JSON am besten, allerdings gibt es sicher auch andere wege.

    willst du die daten nur mit ajax weitergeben an ein anderes php skript?

    also PHP -> AJAX -> PHP ? in dem fall würde ich ajax raus lassen... bringt nicht wirklich etwas...

    erleuchte mich mal bitte :D

    mfg da BendIt
    .:Reden Ist Schweigen und Silber Ist Gold:.

    real programmers don't comment their code: if it was hard to write, it should be hard to read!
  • Jop, PHP->AJAX-PHP

    Warum soll das "sinnlos sein?" Finde ich eigentlich überhaupt nicht... Sonst habe ich einfach so viele sinnlosen Refreshs drinne... Es soll irgendwie noch eine Möglichkeit geben das Array zu seriealisieren... Aber was konkretes habe ich da auch nicht gefunden :(

    // EDIT ich muss das komplette Array übergeben, weil da die Berechtigungen drinne sind die Angeklickt wurden ... Was bringt das, wenn ich nur ein Teil überge... Desswegen übergebe ich auch eine undefinierte größe (muss ich ja) mit sizeof habe ich das auch schon versucht, funktioniert habe nicht.
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisiert, die letzte Newsgroup moderiert wird, werdet Ihr merken, dass man mit Geld allein nicht programmieren kann.
  • willst du die werte aus dem array mit js auswerten/ändern?

    dann wird das nicht mit serialisierten php arrays funzn.

    wenn dus aber nur "durchschleifen" willst geht das schon.

    einfach das serialisierte array mit urlencode als string übergeben...


    aber verlass dich nich zu sehr drauf was ich grad schreibe, hier sind grade um die 800k grad oder so *schwitz* o,O
    .:Reden Ist Schweigen und Silber Ist Gold:.

    real programmers don't comment their code: if it was hard to write, it should be hard to read!
  • Nein, JS macht nicht mit dem Array außer es an PHP via Get weiterleiten...

    PHP(übergebe Array)->AJAX(leitet Array weiter)->PHP(erwartet Array)

    Desswegen dachte ich komme irgendwie um JSON drumherum... Weil mit JSON kenne ich mich null aus, habe ich noch nie gebraucht... Das Problem ist, das im endefekt das Array was ich übergebe halt auch wieder bracuhe :) da ich das ja mit PHP auswerte.

    // EDIT

    Kann ich damit was anfangen? http://framework.zend.com/manual/en/zend.json.objects.html

    Wie gesagt ich habe keine Ahnung von JSON :(
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisiert, die letzte Newsgroup moderiert wird, werdet Ihr merken, dass man mit Geld allein nicht programmieren kann.
  • So, ich kann jetzt schonmal mein Array in eine format konvertieren, was auch JS lesen kann (angeblich). Die frage ist für mich, ich muss die Konvertierung starten BEVOR ist mein ganzen klump an JS übergebe, jedoch ist das ohne Refresh fast nicht realisierbar, also ist es schon nur ist der Aufwand dafür etwas Overkill...

    Aber um mal zu prüfen, ist das korrekt das JS damit was anfangen kann?

    Quellcode

    1. <?php
    2. require_once('Zend/Json.php');
    3. $array[0] = 1;
    4. $array[1] = 2;
    5. $array[2] = 3;
    6. $encode = Zend_Json::encode($array);
    7. print_r($encode);
    8. echo "<br />";
    9. $decode = Zend_Json::decode($encode);
    10. print_r($decode);
    11. ?>
    Alles anzeigen


    Ausgabe:

    [1,2,3]
    Array ( [0] => 1 [1] => 2 [2] => 3 )
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisiert, die letzte Newsgroup moderiert wird, werdet Ihr merken, dass man mit Geld allein nicht programmieren kann.
  • Da permission[] als Array interpretiert wird, in Wirklichkeit aber nur ein Schlüssel des Form Arrays ist, musst du den alternativen Zugriff über eckige Klammern wählen.

    Quellcode

    1. onsubmit="return changePermission(<?php echo $_GET['gredit'];?>, this['permission[]'])">


    in deiner changePermission Funktion baust du dir deinen GET/POST String dann selbst zusammen.

    Quellcode

    1. for(var i=0; i<ob.length; i++) {
    2. if(ob.item(i).checked)
    3. ob.item(i).value;
    4. }


    Kommt drauf an wieviel serialisiert wird. Wenn du keine JavaScript Lib nutzt, die JSON kann, sind es halt wieder ein paar KB mehr. Ansonsten würde ich die Serialisierung vorziehen.

    Zum Evaluieren von JSON siehe: [coderwiki]HowTos/JavaScript-JSON[/coderwiki]
  • D0nUt,

    sorry ich kann dein Code, leider nicht ganz nachvollziehen... Also die übergabe an die JS-Funktion ist erstmal soweit klar...

    Aber das mit der Schleife nicht... Kann mir denken was du vor hast... Das Array auseinander reißen? und alle Elemente einzeln übergeben... oder?

    Das ist meine Funktion:

    Quellcode

    1. function changePermission (permission) {
    2. ajax.onreadystatechange = handlechangePermissionResponse;
    3. ajax.open("GET", '/login/addGroup.php?permission='+permission, true);
    4. //alert (permission);
    5. ajax.send(null);
    6. return false;
    7. }


    Wie man sehen kann erwartet meine Funktion einen Wert (soll das Array sein).

    Wie meinst du das, jetzt mit der Schleife kann dir da irgendwie nicht so richtig folgen.

    Das nächste ist:

    Das Array soll ja an eine PHP-Datei via AJAX weitergegeben werden, nur wenn ich das kaputt mache, dann habe ich ein Problem... Ich würde schon gerne in der PHP-Datei mit

    Quellcode

    1. echo $_GET['permission'][$i];


    zugreifen, wenn das nicht geht habe ich ein kleines Problem :) Dann muss ich alles umbauen.
    Erst wenn der letzte FTP Server kostenpflichtig, der letzte GNU-Sourcecode verkauft, der letzte Algorithmus patentiert, der letzte Netzknoten kommerzialisiert, die letzte Newsgroup moderiert wird, werdet Ihr merken, dass man mit Geld allein nicht programmieren kann.
  • D0Nut übergibt nicht ein Array an die Funktion, sondern die Formular-Dom Objekte. Dann Durchläuft er alle übergebenen Dom Objekte und prüft welche "angewählt" wurden. Der Rest ist noch nicht ausprogrammiert.

    Quellcode

    1. function changePermission (permission) {
    2. var addUrl = '';
    3. for(var i=0; i<permission.length; i++) {
    4. if(permission.item(i).checked)
    5. addUrl = addUrl + '|' + permission.item(i).value;
    6. }
    7. ajax.onreadystatechange = handlechangePermissionResponse;
    8. ajax.open("GET", '/login/addGroup.php?permission='+addUrl , true);
    9. //alert (permission);
    10. ajax.send(null);
    11. return false;
    12. }
    Alles anzeigen


    Dein addGroup.php macht dann ein

    Quellcode

    1. $permission = explode('|', $_GET['permission']);


    Und du hast ein Array mit den übergebenen Berechtigungen.

    Das Ganze müsste man natürlich noch etwas verfeinern, aber das Prinzip sollte in etwa klar sein.

    70abc
    We raise hopes, here ... until they're old enough to fend for themselves.
    - Mike Callahan