Ver Mensaje Individual
  #6 (permalink)  
Antiguo 12/05/2009, 04:49
Avatar de anlhp
anlhp
 
Fecha de Ingreso: agosto-2008
Mensajes: 121
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Ejecutar una url en 2º plano

mira, aqui un ejemplo, si no entiendes algo me lo dices para explicar mejor, y otra cosa, he utilizado el framework jquery tan solo para ahorrarme el trabajo de localizar el formulario en el DOM y evitarme tambien el evento window.onload o algo de eso que me avisa cuando esta contruido todo el arbol del DOM para poder localizar sus elementos

en mi carpeta del servidor tengo dos archivos
1- ajax.php
2- script.php

script.php
Código PHP:
echo 'Ajax works fine'
eso es todo, ahora

ajax.php
Código HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
	<meta name="Content-Type" value=" text/html;charset=utf-8" />
	<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
	<script type="text/javascript">
	function Ajax(){
		this.xhr = (function(){
					var tmp = new XMLHttpRequest();
					return tmp;
					})();
		this.dorequest = function(url){
							this.xhr.open('get', url, false);
							this.xhr.send(null);
						};
	};
	$(document).ready(function(){
		var ajax = new Ajax();
		ajax.dorequest('script.php');
		alert(ajax.xhr.responseText);
		$('#some_form').submit();
	});
</script>
</head>

<body>
<form id="some_form" method="post" action="script.php">
	<input type="text" name="text" value="" />
	<br>
	<input type="button" name="button" value="submit" />
</form>
</body>
</html> 
lo anterior me mostrara primero un alert diciendome la respuesta de script.php, es decir, un alert diciendome "Ajax works fine", y luego envia el formulario, lo que nos lleva a una pagina que dice: "Ajax works fine" y que es la pagina de script.php

dos cosas, lo correcto al trabajar con XMLHttpRequest es hacer estas cosas de enviar el formulario y tal, desde el manejador de eventos [XMLHttpRequest].onreadystatechange pero no se que ostias pasa que ahora esto no me funciona, asi que te lo deje fuera en el codigo
asi que queda:
1.crear mi obejto 'global' de la aplicacion web que tiene una propiedad xhr que es un objeto XMLHttpRequest y que me sirve para hacer llamadas sincronicas o asincronicas a archivos del servidor sin recargar la pagina
2.dicho objeto tiene un metodo dorequest() que recibe la url (ojo, tiene que ser del mismo dominio que la pagina desde la que haces el llamado) y que espera la respuesta que enviara el hecho de llamar a esa url, una cosa, dentro de este metodo, cuando veas this.xhr.open('get', url, false) esto quiere decir que, hacemos una solicitud tipo get a la url y que la haremos de forma sincronica (el tercer parametro que es false) de esta forma el script espera la respuesta antes de seguir a la siguiente instruccion
3.alertamos la respuesta del objeto XMLHttpRequest
4.enviamos automaticamente el formulario

espero que te sirva