Código:
  
Pero con este método debo pasarle a la función un argumento que sea la acción a realizar con la respuesta. Me gustaría que la función ajax() sencillamente devolviese la respuesta, para poder hacer cosas como //Carga un script y su respuesta en texto o xml, y ejecuta la función especificada como parámetro
//La función funcion_trigger debe tener un parámetro que tomará el valor de la respuesta
function ajax(url, xml, funcion_trigger) {
	//Construye un manejador AJAX adecuado al navegador
	var req;
	variable_global = "segundo valor";
	try {
		// Opera 8.0+, Firefox, WebKit
		req = new XMLHttpRequest();
	} catch (e) {
		// Internet Explorer
		try{
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				alert("Navegador no compatible con AJAX!");
				return false;
			}
		}
	}
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			if (req.status == "200") {
				var respuesta;
				respuesta = (xml) ? req.responseXml:req.responseText;
				funcion_trigger(respuesta);
			} else respuesta = null;
		}
	}
	req.open("GET", url);
	req.send("");
}
Código:
  
. Lo he intentado almacenando el valor en una variable global:texto_Respuesta = ajax(...)
Código:
  
Pero así no funciona, ya que (no sé por qué) primero se ejecuta el return de ajax() y después la acción de onreadystatechange. ¿Cómo puedo resolver el problema? ¿Sabéis algún otro modo sencillo de devolver el contenido de la respuesta? (insisto, sin librerías tipo jQuery). Gracias!!! var respuesta_global; //Variable global para intercambiar valores entre funciones
//Carga un script y su respuesta en texto o xml, y ejecuta la función especificada como parámetro
//La función funcion_trigger debe tener un parámetro que tomará el valor de la respuesta
function ajax(url, xml, funcion_trigger) {
	//Construye un manejador AJAX adecuado al navegador
	var req;
	variable_global = "segundo valor";
	try {
		// Opera 8.0+, Firefox, WebKit
		req = new XMLHttpRequest();
	} catch (e) {
		// Internet Explorer
		try{
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try{
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e){
				alert("Navegador no compatible con AJAX!");
				return false;
			}
		}
	}
	req.onreadystatechange = function() {
		if (req.readyState == 4) {
			if (req.status == "200") {
				var respuesta;
				respuesta = (xml) ? req.responseXml:req.responseText;
				respuesta_global = respuesta;
			} else respuesta = null;
		}
	}
	req.open("GET", url);
	req.send("");
	return respuesta_global;
}
 
 
