learnMedlem sedan jan. 20051 130 inlägg 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
SPiNMedlem sedan mars 20007 896 inlägg 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.
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!
learnMedlem sedan jan. 20051 130 inlägg Tack SPiN!
Micke: Intressant, ska testa, tack för tipset!
learnMedlem sedan jan. 20051 130 inlägg 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';
}