You are not logged in.

  • Login

Dear visitor, welcome to Coder Forum. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

1

Saturday, January 24th 2009, 6:51pm

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.

Source code

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

Source code

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


hier der erste versuch eine übergabe von einem wert.

Source code

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

Source code

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

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.

Source code

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.

2

Saturday, January 24th 2009, 10:10pm

Hi,
schau dir dazu mal den Wikibeitrag Formulare mit AJAX.. und ohne an. Da sind alle Formularelemente abgehandelt.
Die vermutlich unbefriedigene Antwort: Am besten geht das Iterieren über form.elements.

Nutze einfach die getFormData Methode ;)

3

Saturday, January 24th 2009, 10:17pm

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

JavaScript Code

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


das absende element

HTML Code

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

4

Monday, January 26th 2009, 9:07am

Um genau diesen ganzen Schleifenkram zu umgehen kannst du auch JSON nutzen.

Sei es für den Response oder den Request.
http://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.


http://www.prototypejs.org/learn/json
"Using JSON with Ajax"

5

Tuesday, January 27th 2009, 12:30am

hmm damit hab ich noch keine erfahrung gemacht aber ich die funktion noch etwas umbebaut.

Java script

Source 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
function check_einzeln(state){
	var checkboxes=document.getElementsByName('hosts[]');
	var uebergabe=new Array();
	if(state){
    	for(var n=0; n<checkboxes.length; n++){
    		if(checkboxes[n].checked){
    			document.host_info.hosts.checked = false;
    			break;
    		}else{
    			document.host_info.hosts.checked = true;
    			uebergabe='all';
    		}
    	}
	}else{
		document.host_info.hosts.checked = false;
	}
	for(var n=0; n<checkboxes.length; n++){
		if(checkboxes[n].checked){
			uebergabe.push(checkboxes[n].value);
		}
	}

	
	var req = new Ajax.Updater('serverstats', 'ajax/hostcalc.php', {method: 'post',parameters: 'host='+uebergabe+''});
}


html

Source code

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,

Source code

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

Source code

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

Similar threads

Social bookmarks