webForumDet fria alternativet

"Posta" formulär med AJAX och PHP

PHP

4 svar · 753 visningar · startad av learn

Medlem sedan jan. 20051 130 inlägg
Frågan#1

Jag har nyligen satt mig i det här med ajax. Tycker det verkar smidigt för att t.ex. hämta data från en databas utan att behöva ladda om sidan. Men, hur gör man för att lägga in data i en databas. Jag menar hur får jag ut datan i PHP som är postat i formuläret, den ligger ju inte $_POST eftersom sidan aldrig postas utan allt sköts via javascript...

Red:
Jag har alltså ett formulär där man matar in t.ex. namn och adress. När man klickar på Submit så anropas js-funktionen "saveData". Där körs save.php med hjälp av Ajax. Så långt är allt cool, men... Hur får jag ut de inmatade uppgifterna namn och adress i save.php.

Hoppas någon förstår hur jag menar.

Hur ska jag göra? Ge mig gärna ett exempel.

Tack! :bire

Medlem sedan mars 20007 896 inlägg
#2

Du kan ju visst använda dig av POST, det är lika enkelt som att skicka data via querystring.

...
_params = "variabel1=value1&variabel2=value2...";
xmlHttpObject.onreadystatechange = ...
xmlHttpObject.open("POST", _postbackPage, _async);
xmlHttpObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=" + _charset);
xmlHttpObject.send(_params);
...

På PHP-sidan (i mitt exempel _postbackPage) gör du som om det hade varit postat från en vanlig sida med ett vanligt formulär.

Alltså, saveData():

var xmlHttpObject;
try {
	xmlHttpObject = new XMLHttpRequest();
} catch(e) {
	try {
		xmlHttpObject = new ActiveXObject("Msxml2.XMLHTTP");
	} catch(e) {
		try {
			xmlHttpObject = new ActiveXObject("Microsoft.XMLHTTP");
		} catch(e) {
			alert("Ajax stöds ej.");
		}
	}
}
xmlHttpObject.onreadystatechange = function {
	if(xmlHttpObject.readyState==4) {
		/* Formulärdata postad */
	}
}
xmlHttpObject.open("POST", "save.php", false);
xmlHttpObject.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
xmlHttpObject.send("namn=" + document.getElementById('NameInputField') + "&adress=" + document.getElementById('AddressInputField'));

Typ.

Medlem sedan feb. 20034 441 inlägg
#3

Jag använder mig alltid av Webtoolkit.AIM när jag skicka POST DATA via Ajax:
http://www.webtoolkit.info/ajax-file-upload.html

Väldigt lätt att använda, funkar i alla webbläsare, kanon!

Medlem sedan jan. 20051 130 inlägg
#4

Tack SPiN!

Micke: Intressant, ska testa, tack för tipset!

Medlem sedan jan. 20051 130 inlägg
#5

När jag postar något (stoppar in i databasen) känns det ju lite märkligt och onödigt att visa php-filen (i det här fallet save.php) i en div. Kan man inte bara köra filen i bakgrunden?

	if (httpAjax.readyState == 4) {
		

[B]		document.getElementById(object).style.display = 'block';
	
		
		document.getElementById(object).innerHTML = httpAjax.responseText;[/B]

		return true;
	
	} else {
		
		document.getElementById('loading').style.display = 'block';
	
	}
261 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
134 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)