Ver Mensaje Individual
  #17 (permalink)  
Antiguo 23/04/2007, 10:25
Avatar de erlingfiallos
erlingfiallos
 
Fecha de Ingreso: febrero-2005
Ubicación: Mexico ahora
Mensajes: 499
Antigüedad: 19 años, 3 meses
Puntos: 9
Re: sobre ajax, porque no lo hace ?

Aqui les dejo el funcionamiento de javascript con ajax.

Se crean el archivo ejemplo.php y el archivo proc.php y pegan sus respectivos codigos, incluyo una funcion que he estado haciendo para el uso de ajax que se llama MakeRequest, esta de mas explicar como funciona.. la pagina proc.php responde con un arreglo de las variables enviadas desde ejemplo.php usando GET y tambien imprime un pequeño script alert. Hasta aqui todo funciona bien y cuando hacen click sobre el link que puse en la pagina ejemplo.php veran impreso el arreglo de variables y el mensaje de "Hola mundo.." como alert. Ahora en la funcion MakeRequest si comentan donde dice "buscarscripts(elemento_res);" el alert ya no aparecera.. ese es el problema o duda que se habia tenido hasta el momento.

Para poder usar la funcion buscarscripts() hay que tener incluida la libreria de prototype y yo lo tome directamente desde la pagina web, por si alguno no la tiene. Si hay dudas aqui seguimos para aclararlas..

Suerte..

ejemplo.php
Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Cargar JavaScript con Ajax</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://www.prototypejs.org/javascripts/prototype.js" type="text/javascript"></script>
<style type="text/css">
/*<![CDATA[*/
	body {font-family: Arial, Helvetica, sans-serif;font-size: 13px;color: #404040;font-weight: bold;}
/*]]>*/
</style>
<script language="JavaScript">
//<![CDATA[
	var http_request = false;   
	   
	function MakeRequest(metodo, url, parametros, elemento_res) {
		http_request = false;
		if (window.XMLHttpRequest) { // Mozilla, Safari,...
			http_request = new XMLHttpRequest();
			if (http_request.overrideMimeType) {
				// se anticipa a que el tipo regresaro sera un mime ('text/xml');
				http_request.overrideMimeType('text/html');
			}
		} else if (window.ActiveXObject) { // IE
			try {
				http_request = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (e) {}
			}
		}
		if (!http_request) {
			alert('No se puedo crear una instancia de XMLHTTP');
			return false;
		}
	  
		if (metodo == 'post') {
			http_request.open('POST', url, true);
			http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
			http_request.setRequestHeader("Content-length", parametros.length);      	
		}
		else {
			http_request.open('GET', url+"?"+parametros, true);
			http_request.setRequestHeader("Content-type", "text/html");
			http_request.setRequestHeader("Content-length", parametros.length);
		}
		http_request.setRequestHeader("Connection", "close");
		http_request.send(parametros);
		http_request.onreadystatechange = function() {			
			if (http_request.readyState == 4) {
				if (http_request.status == 200) {
					result = http_request.responseText;
					document.getElementById(elemento_res).innerHTML = result;
					buscarscripts(elemento_res);
				} else {
					alert('Error al hacer request.');
				}
			}
			else {
				document.getElementById(elemento_res).innerHTML = "Cargando...";
			}
		}
	}
	   
	function getdata(frm) {
		var parametros = '';		
		for (i=0; i<=document.getElementById(frm).elements.length-1; i++) {  			
			elemento = document.getElementById(frm).elements[i];
			if (elemento.type != 'submit')
				parametros = parametros + elemento.id+"="+elemento.value+"&";			
		}
		parametros = parametros.substring(0,parametros.length-1);
		return parametros;		
	}
	
	function buscarscripts(elemento_res) {
		var script = document.getElementById(elemento_res).innerHTML;
		script = script.extractScripts();
		for(i=0;i<script.length;i++)
			instalar(script[i]);
	}
	
	function instalar(script) {
		script = script.replace("<!--","");
		script = script.replace("//-->","");
		if (window.execScript)
			window.execScript(script);
		else
			window.setTimeout(script, 0);
	}
//]]>
</script>
</head>
<body>
	<h2>Cargar usando GET</h2>
	<a href="javascript:void(0)" onclick="javascript:MakeRequest('get', 'proc.php', 'valor0=ajax&valor1=web2.0&valor3=javascript', 'respuesta');">Click aqui</a><br />
	<div id="respuesta" name="respuesta"></div>
</body>
</html> 
proc.php
Código PHP:
<?php
echo "<pre>";
print_r($_GET);
echo 
"</pre>";

echo 
"<script>";
echo 
"alert('Hola mundo');";
echo 
"</script>";
?>