array mit ajax übergeben

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

  • array mit ajax übergeben

    servus leute

    ich hab folgendes Problem
    ich möchte per ajax im hintergund eine Berechnung machen lassen die Berechnung ist nicht das Problem sondern die Übergabe der werte.
    Ich hab auf der Seite mehre checkboxen definiert, und will das so haben das wenn jemand den hacken setzt dieser wert, und auch der wert von andern checkboxen, übergeben wird.

    In einer php schleife werden mir mehrere checkboxen erstellt, und bei absenden des vormulars werden mir auch die werte angegeben wo der hacken gesetzt wurde.

    PHP-Quellcode

    1. <input type="checkbox" name="hosts[]" value="<?php echo $id["hostserver_id"];?>">

    ergebnis ist bei der post übergabe dann [hosts] => Array ( [0] => 15 [1] => 17 )
    simples html alles schön und gut.
    Ich möchte aber gerne den value wert per ajax übergeben.

    der vollständigkeit hablber die serverzeit.php

    PHP-Quellcode

    1. <?php
    2. $zeit = time();
    3. $serverzeit = date("H:i:s",$zeit);
    4. echo $serverzeit;
    5. echo "<br>".$_POST["test"];
    6. ?>


    hier der erste versuch eine übergabe von einem wert.

    PHP-Quellcode

    1. <input type="checkbox" name="hosts[]" onclick="new Ajax.Updater('serverstats', 'ajax/serverzeit.php', {asynchronous: true, evalScripts: true, method: 'post',parameters: 'test='+document.getElementsByName('hosts[]')[0].value+''})" value="<?php echo $id["hostserver_id"];?>">

    dies funktioniert auch das andere script gibt mir dann den value wert mittels post["test"] zurück und die uhrzeit. in dem fall 15, ändere ich die [0] auf [1] wird mir auch die 17 übergeben.

    aber wie bekomm ich es hin das beide werte (später auch mehr werte übergeben werden)
    ich hab dann a bissal mit der for schleibe gebastelt aber irgendwie funkt das ned. ich hab jetzt noch keine überprüfung drin ob der hacken überhaupt gesetzt wurde. dies wär ja mit

    Quellcode

    1. if(document.getElementsByName('hosts[]')[0].checked){
    2. alert document.getElementsByName('hosts[]')[0].checked;
    3. }else{
    4. alert document.getElementsByName('hosts[]')[0].checked;
    5. }

    zum abfragen. und dann auch irgendwie da mit reinzubasteln :)

    aber erst mal ein problem nach dem andern. hier mal die schleife die ich gebastelt habe aber ned funkt.

    PHP-Quellcode

    1. <input type="checkbox" name="hosts[]" onclick="for(var n=0; n< document.getElementsByName('hosts[]').length; n++){ alert document.getElementsByName('hosts[]')[n].value}" value="<?php echo $id["hostserver_id"];?>">


    eigentlich solte ich da doch 2 alert fenster bekommen die mir den wert 15 und 17 presentieren. aber irgendwie geht das ned.

    Ich will halt erreichen, das mir die for schleife die beiden werte dann mit der ajax funktion in der übergabe "test" entweder als array, quasi [test] => Array ( [0] => 15 [1] => 17 ) oder als string mit komma getrennt [test] => 15,17 übergibt. dann kann ich in meiner serverzeit.php die berechnungen machen und die werte urückgeben bzw ausgeheben.

    ich offe da kann mir einer helfen. die sachen da oben hab ich mir mühsam zusammen gesucht da ich von javascript immer noch nicht so viel ahnung hab. aber das ändert sich ja mit jeder neuen aufgabe die man sich stellt.
  • danke für die antwort aber ich bin gerade auf ne lösung gekommen die mich befridigt :)
    aber ich schau mir das gerne noch an.

    hier der Java script code

    Quellcode

    1. function grummel123(id){
    2. var checkboxes=document.getElementsByName('hosts[]');
    3. var narf=new Array();
    4. for(var n=0; n<checkboxes.length; n++){
    5. if(checkboxes[n].checked){
    6. alert(checkboxes[n].value);
    7. narf.push(checkboxes[n].value);
    8. }
    9. }
    10. alert('Array\n '+narf);
    11. var req = new Ajax.Updater('serverstats', 'ajax/serverzeit.php', {method: 'post',parameters: 'test='+narf+''});
    12. }
    Alles anzeigen


    das absende element

    Quellcode

    1. <input type="checkbox" name="hosts[]" onclick="grummel123(this.checked)" value="<?php echo $id["hostserver_id"];?>">


    macht genau das was ich wolte die alert sachen können noch raus.
    übergibt mir jetzt den array als 15,17 und da kann man super weiterarbeiten

    Gruß Odus
  • Um genau diesen ganzen Schleifenkram zu umgehen kannst du auch JSON nutzen.

    Sei es für den Response oder den Request.
    de2.php.net/json

    und in JS kannst du aus dem JSON-String bei der Response ganz easy ein Object erstellen.
    Prototype besitzt da auch schon fertige Funktionen.


    prototypejs.org/learn/json
    "Using JSON with Ajax"
  • hmm damit hab ich noch keine erfahrung gemacht aber ich die funktion noch etwas umbebaut.

    Java script

    Quellcode

    1. function check_einzeln(state){
    2. var checkboxes=document.getElementsByName('hosts[]');
    3. var uebergabe=new Array();
    4. if(state){
    5. for(var n=0; n<checkboxes.length; n++){
    6. if(checkboxes[n].checked){
    7. document.host_info.hosts.checked = false;
    8. break;
    9. }else{
    10. document.host_info.hosts.checked = true;
    11. uebergabe='all';
    12. }
    13. }
    14. }else{
    15. document.host_info.hosts.checked = false;
    16. }
    17. for(var n=0; n<checkboxes.length; n++){
    18. if(checkboxes[n].checked){
    19. uebergabe.push(checkboxes[n].value);
    20. }
    21. }
    22. var req = new Ajax.Updater('serverstats', 'ajax/hostcalc.php', {method: 'post',parameters: 'host='+uebergabe+''});
    23. }
    Alles anzeigen


    html

    PHP-Quellcode

    1. <input type="checkbox" name="hosts[]" onclick="check_einzeln(!this.checked)" value="<?php echo $id["hostserver_id"];?>">


    funktioniert auch alles wunderbar. jedesmal wenn ich auf eine der checkboxen klicke ändert sich der übergabe wert.
    Naja jetzt wolte ich noch ne 2ten wert übegeben aber das ging erstmal garnicht,

    Quellcode

    1. {method: 'post',parameters: 'host='+uebergabe+'','irgendwas'='+value+''});
    geht nicht.

    naja ned so schlimm googlen wir halt
    hab dann ein paar infos gefunden und naja 2ter wert übergeben jetzt kein problem mehr aber aber der array ändert sich dann nicht mehr. wenn ich 3 checkboxen angeklickt hab tauchen die werte auf diesmal als array übergabe. Array ( [0] => 15 [1] => 17 [2] => 19 ) sobald ich aber bei einer der checkboxen den hacken rausnehme änder sich die werte nimmer, ausser ich fang bei der letzten box an.
    quasi ich drück auf die 15 er checkbox werte ändern sich ned drücke ich aber auf die 19 er gibts nur noch 15 und 17.

    Java code

    PHP-Quellcode

    1. var req = new Ajax.Updater('serverstats', 'ajax/hostcalc.php', {method: 'post',parameters: {'host[]':$$('input[name="hosts[]"]:checked').pluck('value'),language:'<?php echo $_SESSION["language"];?>'}});

    hier übergebe ich zwar beide parameter und deren werte aber wie gesagt der bei hosts wird immer alles übergeben wenn mal alle angeklickt waren.

    ich hab auch probiert die variabel "uebergabe" da einzubastel aber das geht irgendwie ned. in der variable stehen immer die drin die qasi gedrückt wurden.

    vieleicht kann mir da noch jemand helfen.
    Langsamm wirds ja mit dem javascript