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; }