View Single Post
Hei.

Prøver å få til noe AJAX-funksjonalitet på noen former og checkboxes som skal sende informasjon videre til ett PHP-script, uten at hele siden trenger å lastes på nytt.

Formen ser slik ut:

HTML-kode

<form>
	<fieldset>
		<legend>Bill: </legend>
		Title: <input type="text" name="title" id="title" /><br />
		Store: <input type="text" name="store" id="store" /><br />
		Amount: <input type="text" name="amount" id="amount" /> Kr.<br />
	</fieldset>
	<fieldset>
		<legend>Payers: </legend>
		<input type="checkbox" name="payer[]" value="Eivind" /> Eivind<br />
		<input type="checkbox" name="payer[]" value="Erik" /> Erik<br />
		<input type="checkbox" name="payer[]" value="Daniel" /> Daniel<br />
		<input type="checkbox" name="payer[]" value="Sigbjorn" /> Sigbjørn<br />
	</fieldset>
	<input type="button" value="Submit" onclick="ajaxFunction();"/>
</form>
JavaScriptet ser slikt ut:

Kode

	// Create a function that will receive data sent from the server
	var amount = document.getElementById('amount').value;
	var postdata = "amount="+ amount +"&payer[0]=Eivind";
	ajaxRequest.open("POST", "serverTime.php", true);
	ajaxRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	ajaxRequest.onreadystatechange = function(){
		if(ajaxRequest.readyState == 4){
			var response = ajaxRequest.responseText;
			document.getElementById('responseText').innerHTML = response;
		}
	}
	ajaxRequest.send(postdata);
Det jeg lurer på er om det virkelig er eneste måte å bruke funksjonen send(string), som må ha alle variabler kodet i en lang streng? Kan jeg ikke sende over hele arrays eller lignende?

Problemet er med checkboxene, som jeg ikke helt vet hvordan jeg skal sende videre.. Med PHP kan jeg hente inn de valgte checkboxene som ett array. Er dette mulig med JavaScript? Eller må jeg virkelig ha en unik ID på hver checkbox, sjekke om verdien er null eller ikke, for så å kode det inn i postdata-strengen? Dette virker som en dårlig løsning for å overføre data til en server.. Finnes det andre måter å gjøre dette på?