Interactie met ajax/js op website

Status
Niet open voor verdere reacties.

ginojo

Gebruiker
Lid geworden
7 sep 2010
Berichten
912
Hallo allemaal,

Ik heb nu een eigen druk bezochte server. Host heel wat websites en gaat best lekker.

Maar nu het probleem. Ik heb een heel goed beveiligingssysteem erop, (zelf gemaakt) dit van alles logt in databases. denk hierbij aan 404-errors, 200-requests, cronjob-fails etc. Maar ik ben nu bezig aan een admin panel. Helaas is het idee dat ik in gedachte had niet mogelijk.

Ik had het volgende in gedachte, ik gebruik de index.php als 'hoofdpagina met divs', en laat dmv ajax calls informatie uit het data.php bestand in de divs plaatsen. Dit werkte goed. Totdat de grotere modules geïntergreerd werden, met langere scripts. Ajax wacht dus steeds op call 1, totdat die niet is afgerond word call 2 niet gestart. (er gaan per seconde zo een 5 calls, dus bij een script van 40 seconde komt er ineens een vloedgolf aan calls achter elkaar.)

Hoe kan ik nou zorgen dat al deze calls gewoon door elkaar kunnen lopen zonder eerst op de vorige te moeten wachten?

Bedankt, Gino
 
Hej Gino,

Je kunt de AJAX-requests asynchroon laten lopen - 't script gaat dan gewoon verder en zo kun je meerdere requests tegelijk 'opstarten'. Om aan te geven wat er moet gebeuren met het resultaat van een request, gebruik je een zgn. callback-functie. Voorbeeldje:

[JS]function createXHR() {
if (window.XMLHttpRequest) {
return new XMLHttpRequest();
}
else {
return new ActiveXObject("Microsoft.XMLHTTP");;
}
}
function addEvent(obj, type, callback, useCapture) {
if (obj.addEventListener) {
obj.addEventListener(type, callback, useCapture);
}
else if (obj.attachEvent) {
obj.attachEvent("on" + type, callback);
}
else {
console.warn("Failed to add " + type + "-event, ", obj);
}
}

function main() {

var someData = {};

var xhr = createXHR();
xhr.open("POST", "data.php", true); //Laatste argument (true) geeft aan of de request asynchroon moet lopen
addEvent(xhr, "readystatechange", function callback() {
if (this.readyState == 4) {

//Request is klaar, verwerk resultaat

}
}, false);
xhr.send(JSON.stringify(someData));

}[/JS]

Gr. Robin
 
Als je van plan bent om meer javascript te gaan gebruiken op je website loont het op een kijkje te nemen naar jquery dat is een library waar je veel functies in javascript makkelijker en korten kan schrijven, ook de ajax requests en het vullen van divs.

Mvg,
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan