Modification de xajax

Mammouth du PHP | 1511 Messages

30 déc. 2007, 18:44

Bonsoir la cie ;)
Je me permets de vous poster ici une petite modification de xajax que j'ai fait afin de pouvoir l'utiliser sur les Frameworks.
Cette petite modification permet d'appeller directement une page qui renverra une réponse au format xml de xajax ;)
	/*
	Calling page which will return xajaxResponse XML data
	(c) 2008 TramiCMS & xajaxProject.org
	*/
	this.callPage = function(sPage, sRequestType)
	{
		var i,r;
		if (document.body && xajaxWaitCursor)
			document.body.style.cursor = 'wait';
		if (xajaxStatusMessages == true) window.status = 'Sending Request...';
		clearTimeout(loadingTimeout);
		loadingTimeout = setTimeout("xajax.loadingFunction();",400);
		if (xajaxDebug) this.DebugMessage("Starting xajax...");
		if (sRequestType == null) {
		   var xajaxRequestType = xajaxDefinedPost;
		}
		else {
			var xajaxRequestType = sRequestType;
		}
		var uri = sPage;
		var value;
		r = this.getRequestObject();
		if (!r) return false;
		r.open(xajaxRequestType==xajaxDefinedGet?"GET":"POST", uri, true);
		if (xajaxRequestType == xajaxDefinedPost)
		{
			try
			{
				r.setRequestHeader("Method", "POST " + uri + " HTTP/1.1");
				r.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			}
			catch(e)
			{
				alert("Your browser does not appear to  support asynchronous requests using POST.");
				return false;
			}
		}
		r.onreadystatechange = function()
		{
			if (r.readyState != 4)
				return;
			
			if (r.status==200)
			{
				if (xajaxDebug) xajax.DebugMessage("Received:\n" + r.responseText);
				if (r.responseXML && r.responseXML.documentElement)
					xajax.processResponse(r.responseXML);
				else {
					var errorString = "Error: the XML response that was returned from the server is invalid.";
					errorString += "\nReceived:\n" + r.responseText;
					trimmedResponseText = r.responseText.replace( /^\s+/g, "" );// strip leading space
					trimmedResponseText = trimmedResponseText.replace( /\s+$/g, "" );// strip trailing
					if (trimmedResponseText != r.responseText)
						errorString += "\nYou have whitespace in your response.";
					alert(errorString);
					if (xajaxStatusMessages == true) window.status = 'Invalid XML response error';				
				}
			}
			else {
				if (xajax.arrayContainsValue(xajax.responseErrorsForAlert, r.status)) {
					var errorString = "Error: the server returned the following HTTP status: " + r.status;
					errorString += "\nReceived:\n" + r.responseText;
					alert(errorString);
				}
				if (xajaxStatusMessages == true) window.status = 'Invalid XML response error';								
			}
			
			delete r;
			r = null;
		}
		if (xajaxDebug) this.DebugMessage("Calling "+sFunction +" uri="+uri+"");
		r.send(null);
		if (xajaxStatusMessages == true) window.status = 'Waiting for data...';
		delete r;
		return true;
	}
Cette fonction est basée sur la fonction xajax.call() de la librairie js de xajax et j'envisage de lui ajouter sous peu le support de variables GET et POST.
Voilou ;)
Cette fonction est a ajouter au fichier xajax.js si celui ci est décompressé ou xajax_uncompressed.js qui sera a recompresser pour être utilisé ;)
J'espere que ca pourra servir a certains :)

Compatible avec v0.2.5 uniquement, non testé avec versions antérieures ou supérieures.

Liens :
www.xajaxproject.org -> Site du projet Xajax.