door: JorisO
March 18 2007
Hieronder een voorbeeld javascriptje van een POST en een GET request dmv een XMLHttpRequest. Een POST request heb je in je Ajax code in ieder geval nodig wanneer je querystring of verzonden data langer wordt dan 2083 karakters gezien MS internet explorer dit niet aankan: zie hier voor meer info - support.microsoft.com
Voorbeeld Javascript functies voor POST en GET requests:
<script language="javascript">
function createXMLHttpRequest() {
if (window.ActiveXObject) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
}
function GETRequest(query) {
createXMLHttpRequest();
var queryString = "whatever.php?" + query;
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.open("GET", queryString, true);
xmlHttp.send(null);
}
function POSTRequest(query) {
createXMLHttpRequest();
var url = "whatever.php";
xmlHttp.open("POST", url, true);
xmlHttp.onreadystatechange = handleStateChange;
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlHttp.send(query);
}
function handleStateChange() {
if(xmlHttp.readyState == 4) {
if(xmlHttp.status == 200) {
parseResults();
}
}
}
function parseResults() {
alert(xmlHttp.responseText);
// document.getElementbyId('whatever').innerHTML = xmlHttp.responseText;
}
</script>
Voorbeeld PHP script dat verzonden waardes opvangt/retourneert:
<?php
foreach ($_REQUEST as $variablename => $value){
echo $variablename.' = '.$value;
echo "\n <br>";
}
?>

Naarmate de webtechnologieen die aangeduid worden met de term Ajax
in populariteit groeien, lijkt de betekenis deze verzamelterm ook
steeds veelomvattender te worden. Veel javascript/html/css/ combinaties die vroeger onder de noemer DHTML werden
gevat, en ook zo'n beetje elke vorm van asynchroon data opvangen van de
http server wordt tegenwoordig met het buzz-woord 'Ajax' aangeduid.
Traditioneel staat Ajax als afkorting echter voor
Asynchronous JavaScript and XML. Waarschijnlijk de meest interessante uitvinding van Microsoft sinds MSDOS was de
'XMLHttpRequest' (geintroduceerd met Office 2000)
. D.m.v. het
XMLHttpRequest object (
javascript) kan de weppagina/applicatie zonder de pagina te verversen (
asynchroon)
data (XML) uitwisselen met de webserver. Gezien de data in den beginne
meestal in XML vorm werd uitgewisseld heet Ajax nu niet Aja maar Ajax.
Maar het
XMLHttpRequest request kan evengoed worden gebruikt om HTML, plain text of bijv.
JSON uit te wisselen.
Ik doe namelijk een post, voor een login formulier naar een phpscript. Dit script doet een echo true of false... naargelang de login gelukt is of niet...
Dan vergelijk ik de ResponseText met true of false... dit werkt nog allemaal...
Maar dan wil ik dat ie een boolean zou returnen (naar een vorige functie).
<pre>
function getLoginState(uname, pwd){
var xmlhttp = createXMLHttpRequest();
var bool = false;
xmlhttp.open('POST', './scripts/login.php', true);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
if(xmlhttp.responseText == "true"){
bool = true;
}else {
bool = false;
}
}
}
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.send('username=' + uname + '&pwd=' + pwd);
//alert(bool);
return bool;
}
</pre>
Deze functie werkt perfect OP VOORWAARDE dat ik de laatste alert laat uitvoeren... anders krijg ik gewoon undefined ?!
Ik kan er niet aan uit waarom ie nu zo zeer die alert nodig heeft...
Enig ID ?
alvast bedankt