Ver Mensaje Individual
  #1 (permalink)  
Antiguo 20/12/2009, 21:07
Nashi
 
Fecha de Ingreso: noviembre-2009
Mensajes: 25
Antigüedad: 14 años, 6 meses
Puntos: 0
crear archivo txt mediante ajax

Buenas!

Estoy intentando hacer que a partir de unos valores que obtengo con javascript, pueda crear un archivo txt para que el usuario lo pueda descargar. El tema de crear el txt es facil, y el de enviar los datos que tengo en js a php, creia que tbn lo seria pero se me esta resistiendo.
Aqui les dejo el codigo completo para que vean como esta:

Archivo HTML

Código:
<html>
<head>
<title>Crear txt</title>

<script type="text/javascript">

//funcion que simplemente crea un objeto ajax
function newAjax(){
      var xmlhttp=false;
      try {
         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
         try {
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
         } catch (E) {
            xmlhttp = false;
         }
      }
      if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
         xmlhttp = new XMLHttpRequest();
      }
   return xmlhttp;
}  


//funcion que envia los datos que obtiene mediante ajax para poder crear el txt en php
function sendData(url){
		
	var nombre = "Antonio";
	var edad = 22;
	var direccion = "Sevilla";

	ajax = newAjax();

   	var data = "";
   	data = 'nombre='+nombre+'&edad='+edad+'&direccion='+direccion;
        
	ajax.open("POST", url, true);
  	ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
	ajax.send(data);
                //el siguiente codigo esta comentado pq no necesito actualizar el div
  	/*ajax.onreadystatechange = function () {
  		if (ajax.readyState == 4) {
     		document.getElementById('result').innerHTML = ajax.responseText;
		}
	}*/
	
	
}


</script>
</head>
<body>

<input type="button" onclick="sendData('maketxt.php');"value="test" />

<div id="result"></div>

</body>
</html
Archivo PHP

Código:
<?

header("Content-type: application/text");
header("Content-Disposition:  filename=\"archivo.txt\";");

$nombre = $_POST['nombre'];
$edad = $_POST['edad'];
$direccion = $_POST['direccion'];

$file = "nombre: ".$nombre."</br>";
$file .= "edad: ".$edad."</br>";
$file .= "direccion: ".$direccion."</br>";

print $file;
Explicado de una forma facil:

1.El usuario clica el boton con valor test y este llama a la funcion sendData con el nombre del archivo php donde creare el txt

2.Dentro de la funcion sendData, se crea el objeto Ajax y se envian los datos a maketxt.php mediante post

3. En el archivo maketxt.php, pongo lo que quiero que aparezca en el txt y lo imprimo, para que aparezca el dialogo de descarga de txt, pero en ajax parece que no funciona de todo bien.

Obviamente, si descomento las lineas:

Código:
//el siguiente codigo esta comentado pq no necesito actualizar el div
  	/*ajax.onreadystatechange = function () {
  		if (ajax.readyState == 4) {
     		document.getElementById('result').innerHTML = ajax.responseText;
		}
	}*/
Introduce el text dentro del div 'result', pero yo lo que quiero es que el usuario pueda descargar su archivo txt con ese contenido.

Alguien tiene alguna idea? Como podria pasar esos datos que tengo en js para poder meterlos en el archivo txt que quiero que el usuario puedas descargar?

Muchas gracias de antemano! : )