hotti: httpRequest

Beitrag lesen

hi,

Fehlerkonsole zeigt keine JavaScript-Fehler an.

Ok, dann bringen wir mal den Code ins Reine:

  
// Erstelle XHR Objekt als Return-Value  
function mob(){  
	var mob = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");  
	return mob;  
}  
  
// ajax core  
function ajaxRequest(hash){  
	var xhr = mob(); // funktion s.o.  
  
	function rx(){  
		if(xhr.readyState == 4){  
			if(xhr.status == 200){  
				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;  
}  
  

Um den Request zu senden, wird wiederum ein Objekt erstellt:

  
        <script type="text/javascript">  
            var stat = {  
                callback: function(response){  
                    alert(response);  
                    if(this.errstr) alert(this.errstr);  
                },  
                call: function(){  
                    this.url = '/cgi-bin/perllog.cgi'; // Dein URL  
                    this.params = ''; // erstmal leer  
                    this.method = 'GET'; // POST geht auch mit o.g. scr  
                    ajaxRequest(this);  
                }  
            }  
  
            stat.call(); // hier wird der Request gesendet  
  
        </script>  

Zum Aufruf der lib "ajaxCore" wird hierzu ein Obj. "stat" erstellt, das kannst Du auch anders nennen. Wichtig sind die 3 Eigenschaften url, params, method. Das Objekt beiinhaltet die Callback-Funktion, darüber kommt die Response zurück. Der Einfachheit halber wird in der Callback-Funktion die Response als alert() ausgegeben. Damit Du erstmal siehst wie das geht. Wichtig: der Request-URL sollte entweder full qualifiziert sein als "http://example.com/ressource" oder, weil SOP, als "/ressource" ("/" steht für Deinen Server, rootDir).

Struppi hat an anderer Stelle (musst mal suchen) auch einen schönen Code mal veröffentlicht. Aber probier mal den Obenstehenden, der tut. Die beiden Funktionen ajaxRequest() und mob() kannst du auch auslagern.

Hotti