AJAX Formular - POST Daten als array weiter geben

südpol

Erfahrenes Mitglied
Hi,

ich habe ein kleines AJAX Formular welches, nachdem es ausgefüllt wurde, nachfolgende Funktion aufruft. Diese sammelt die Daten ein und sendet diese via POST an die übergebene URL. Das funktioniert soweit auch sehr gut mit regulären Formularfeldern. Wenn ich allerdings versuche die Werte ausgewählter Checkboxen zu übertragen, dann werden immer alle als ausgewählt übergeben.

Javascript:
function MakePostRequest(TargetURL, ElementID)
{
	LightboxON();
	
	var xmlHttp = getXMLHttp();
		
	var parameters = "dummy=dummy";
	var form = document.getElementById('lightbox_form').elements;
	for(var i = 0; i < form.length; i++)
	{
		parameters += "&"+form[i].name+"="+encodeURIComponent(form[i].value); 
	}
	 
	xmlHttp.onreadystatechange = function()
	{
		if(xmlHttp.readyState == 4)
		{
			HandleResponse(xmlHttp.responseText, ElementID);
		}
	}

	xmlHttp.open("POST", TargetURL, true);
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.send(parameters);
  
}

Ich vermute mal, dass das daran liegt, dass ich form[i].value auswerte und dabei keine Unterscheidung mache ob die Checkbox aktiv ist oder nicht... Die Frage ist jetzt wie ich die Funktion anpassen kann dass sie weiterhin arrays weiter gibt die allerdings nur die Ausgewählten values enthält. (Ich bekomme es hin, die checkboxen auszusteuern und die Werte z. B. durch ein | getrennt zu übergeben - das ist aber irgendwie doof und geht bestimmt noch schöner).

Hat jemand einen Tipp für mich.
 
... es hilft oft schon das Problem mal aufzuschreiben.

Hier die Lösung:

Javascript:
function MakePostRequest(TargetURL, ElementID)
{
	LightboxON();
	
	var xmlHttp = getXMLHttp();
		
	var parameters = "dummy=dummy";
	var form = document.getElementById('lightbox_form').elements;
	for(var i = 0; i < form.length; i++)
	{
		if(form[i].type == "checkbox") 
		{
			if(form[i].checked) {
				parameters += "&"+form[i].name+"="+encodeURIComponent(form[i].value); 
			}
		} 
		else 
		{
			parameters += "&"+form[i].name+"="+encodeURIComponent(form[i].value); 
		}
		
	}
	 
	xmlHttp.onreadystatechange = function()
	{
		if(xmlHttp.readyState == 4)
		{
			HandleResponse(xmlHttp.responseText, ElementID);
		}
	}

	xmlHttp.open("POST", TargetURL, true);
	xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	xmlHttp.send(parameters);
  
}
 

Neue Beiträge

Zurück