hi,
Ach so. Der "Callbackfunktion" "handle_response" sollte vielleicht noch übergeben werden, welcher Request denn fertig ist. Also:
clients[i].onreadystatechange = handle_response(i);
Logo, ein überschaubarer Code sollte es schon sein ;-)
Bisher war das für mich ausreichend:
// Erstelle XHR Objekt
function mob(){
var mob = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
return mob;
}
// CompatMode
// ajax core
function ajaxRequest(hash){
var xhr = mob();
function rx(){
if(xhr.readyState == 4){
if(xhr.status == 200){
if(hash.headers){
hash.etag = xhr.getResponseHeader("ETag");
hash.type = xhr.getResponseHeader("Content-Type");
}
hash.callback(xhr.responseText);
}
else{ hash.errstr = 'Server anwortet nicht'; }
}
}
if(hash.method == 'POST'){
xhr.open("POST", hash.url, true);
xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhr.setRequestHeader("Content-length", hash.params.length);
xhr.setRequestHeader("Connection", "close");
xhr.send(hash.params);
xhr.onreadystatechange = rx;
}
else{
var url = hash.url + '?' + hash.params;
xhr.open("GET", url, true);
xhr.send(null);
xhr.onreadystatechange = rx;
}
return true;
}
Ein Req. => ein Objekt. Ein weiteres Object wird der Funktion ajaxRequest() übergeben, da steckt auch die callback() Funktion drin, die im <script> entsprechend angepasst werden muss. Grundgerüst und die entsprechenden Attribute für das angepasste Objekt:
<script type="text/javascript">
var stat = {
callback: function(response){
// Einbau Response im DOM
// JSON oder eigene Struktur
},
call: function(){
this.url = '/cgi-bin/perllog.cgi';
this.params = 'x=y'
this.method = 'POST';
ajaxRequest(this);
}
}
stat.call();
</script>
Hotti