elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Aprendiendo AJAX con PHP!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Aprendiendo AJAX con PHP!!  (Leído 2,491 veces)
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Aprendiendo AJAX con PHP!!
« en: 25 Julio 2008, 20:25 pm »

Hola:

Pues tengo solo unas 3 o 4 horas leyendo y testeando con AJAX para implementarlo en un sistema personal web, de entrada para probar mis conocimientos me platie un objetivo muy simple:

1- Crear una pagina con un formulario, que contenga un INPUT TEXT y un INPUT SUBMIT
2- Escribir algo en el INPUT TEXT y pulsar el INPUT SUBMIT.
3- Que ajax lo procese y escriba algo
4- Si el INPUT TEXT esta vacio que escriba "Escribe algo en la cajita";
5- Si el INPUT TEXT tiene algo, pues que escriba en la pagina lo que el usuario escribio.

Es todo, para esto escribi el code y no me funciona del todo :S, vaya, aun me siento un poco revuelto y no comprendo porque lo unico que hace es poner el texto "Cargando..." y desaparece, pero esto sucede en cuestion de segundos (1 segundos para ser exacto), como quien dice, muy apenas alcanzo a ver el texto de "Cargando", pero jamas logro que se escriba el texto que se introdujo en la cajita INPUT TEXT :S !!...

Por favor ayudenme a re-acomodar mis conocimientos y resolver mis errores que tenga el codigo... Aqui dejo el code:

Utilizo Firefox 3.0

Código:
<html>
<head>
<title>Test javascript</title>
<script language="javascript" type="text/javascript">
<!--
function saludos()
{
alert( "hola" );
}

function ajax()
{
var pagina=false; //conector ajax
var contenedor_style;

if( window.XMLHttpRequest ) //Navegador Firefox
pagina= new XMLHttpRequest(); //creamos objeto para el navegador
else if( window.ActiveXObject ) //Navegador Internet Explorer
{
try //Version Actual
{
pagina= new ActiveXObject( "Msxml2.XMLHTTP" ); //creamos objeto para el navegador
}
catch(e) //version Antigua
{
try
{
pagina= new ActiveXObject( "Microsoft.XMLHTTP" ); //creamos objeto para el navegador
}
catch(e)
{
}
}
}
return pagina;
}

function enviar_datos()
{
var conector, capa;

conector= ajax();
capa= document.getElementById('contenedor_upload');

conector.open( "POST", document.forms.miformulario.dato, true );
conector.onreadystatechange= function()
{
if( conector.readyState==1 )
capa.innerHTML= "Cargando...";
else if( conector.readyState==4 )
{
if( conector.state==200 )
capa.innerHTML= "listo...";
}
}
if(document.forms.miformulario.dato)
{
conector.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded" );
conector.send(document.forms.miformulario.dato);
}
else
conector.send(null);
}
//-->
</script>

<style typ="text/css" rel="stylesheet">
<!--
#contenedor_upload
{
margin:auto;
//margin-bottom:4px;
//padding:3px;
width:250px;
//background-color:lightblue;
//border:solid #33ccff 1px;
font-family:"sans-serif";font-size:10px;
}
//-->
</style>
</head>

<body>
<?php
echo "Hola";
echo "<p>";
echo "<form method=\"POST\"  name=\"miformulario\">";
echo "<input type=\"text\" name=\"dato\">";
echo "<input type=\"submit\" value=\"Enviar\" onclick=\"enviar_datos();\">";
echo "</form>";

echo "<p>";
echo "<div id=\"contenedor_upload\">";
//echo "sección de Carga";
echo "</div>";
echo "</p>";
?>
</body>
</html>


En línea

alone-in-the-chat


Desconectado Desconectado

Mensajes: 587


Ver Perfil
Re: Aprendiendo AJAX con PHP!!
« Respuesta #1 en: 25 Julio 2008, 23:54 pm »

conector.open( "POST", document.forms.miformulario.dato, true );


la funcion open recibe como segundo parametro una URL .

por ejemplo

conector.open( "POST", "/procesar.php", true );


if( conector.readyState==1 )
eso indica que esta intentando conectar

conector.state==200
 
El estado llega a 200 cuando ah terminado de ejecutar satisfactoriamente.



Hay un error de concepto en este caso , ajax se usa para dar mayor dinamismo a una pagina , digamos que tengo un formulario de ingreso de clientes donde debo elegir una ciudad para el cliente , para ello primero eliges el pais , en base a ese pais debes mostrarle el combo con las ciudades , con ajax no tendrias por que recargar la pagina para generar ese combo con las ciudades , lo que tendrias que hacer es coger el id del pais que eliges en el combo , usando ajax enviarselo al script que desees que procese ese dato (ese es el segundo parametro del metodo open), y este(el script) debe darte una respuesta o salida , que deben ser las ciudades para ese pais .

Ademas veo que intentas ejecutar el ajax al momento de enviar el formulario con el boton submit , no creo que eso llegue a funcionar (nunca lo eh probado).

Si no quieres liarte mucho puedes usar unas librerias javascript que te pueden aligerar el trabajo , la que mas me gusta es  Jquery.

Aqui tienes una pagina con la documentacion .

http://visualjquery.com/index.xml

Aqui te coloco un pequeño codigo de ejemplo de uso de ajax simple , mas o menos asi deberia ir el ejemplo de las ciudades.

Código
  1. function getCity()
  2. {
  3.    var obj = document.getElementById("paises");
  4.    var valor = obj.options[obj.selectedIndex].value;
  5.    var ajax;
  6.    ajax = new objetus();//creo el objeto XhtmlHttp
  7.    var _values_send = "idpais=" + valor;
  8.    var _URL_ =  "estados.php";
  9.    ajax.open("POST", _URL_, true);
  10.    ajax.onreadystatechange = function(){
  11.        if (ajax.readyState == 1) {
  12.        }
  13.        else
  14.            if (ajax.readyState == 4) {
  15.                if (ajax.status == 200) {
  16.                    alert(ajax.responseText);
  17.                }
  18.            }
  19.    }
  20.    ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  21.    ajax.send(_values_send);
  22.    delete (ajax);
  23. }
  24.  
  25.  
  26.  

Usando jquery eso seria mucho mas sencillo.


Saludos¡¡¡



En línea

Because maybe
You're gonna be the one that saves me
And after all
You're my wonderwall
d[n_n]b
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Aprendiendo AJAX con PHP!!
« Respuesta #2 en: 26 Julio 2008, 00:09 am »

Gracias por contestar alone-in-the-chat, crei que nadie hiva a decir algo jejeje...

Pero bueno, lo que sucede es que talvez el ejemplo que use al principio fue un poco malo para ti, pero la finalidad de todo esto es poder realizarme un Uploader, para subir archivos a mi servidor, ya que usando puro PHP esto es un poco tedioso debido a las restricciones en el tiempo de ejecucion de scripts que se permite, vaya, si el archivo pesa mucho y el script lleva a su tiempo de ejecucion limite, pues el proceso no se termina (no se sube el archivo). Este haciendolo cambiando los tiempo de restriccion con algunas funciones, pero la vdd no me parecio muy transparente y mucho menos factible.

La idea es esa, hacer un Uploader simple con AJAX, asi que te pongo un codigo que estoy haciendo de EJEMPLO, pero la verdad no doy una, ni si quiera consigo que se escriba algo en la pagina, ni mucho menos subir el file :S, porfavor echale un ojo a esto:

Código
  1. <html>
  2. <head>
  3. <title>Test javascript</title>
  4. <script language="javascript" type="text/javascript">
  5. <!--
  6. function ajax()
  7. {
  8. var pagina=false; //conector ajax
  9. var contenedor_style;
  10.  
  11. if( window.XMLHttpRequest ) //Navegador Firefox
  12. pagina= new XMLHttpRequest(); //creamos objeto para el navegador
  13. else if( window.ActiveXObject ) //Navegador Internet Explorer
  14. {
  15. try //Version Actual
  16. {
  17. pagina= new ActiveXObject( "Msxml2.XMLHTTP" ); //creamos objeto para el navegador
  18. }
  19. catch(e) //version Antigua
  20. {
  21. try
  22. {
  23. pagina= new ActiveXObject( "Microsoft.XMLHTTP" ); //creamos objeto para el navegador
  24. }
  25. catch(e)
  26. {
  27. }
  28. }
  29. }
  30. return pagina;
  31. }
  32.  
  33. function enviar_datos()
  34. {
  35. var conector, capa, archivo;
  36.  
  37. conector= ajax();
  38. capa= document.getElementById('contenedor_upload');
  39. archivo= document.getElementById('miarchivo');
  40.  
  41. conector.open( "POST", "123.php?subir=1", true );
  42. conector.onreadystatechange= function()
  43. {
  44. if( conector.readyState==1 )
  45. capa.innerHTML= "Cargando...";
  46. else if( conector.readyState==4 )
  47. {
  48. if( conector.status==200 )
  49. capa.innerHTML= "listo...";
  50. }
  51. }
  52. conector.send(null); //como aun no se tratar el archivo, envio NULL porque no se que enviar jejeje
  53. //conector.setRequestHeader( "Content-type", "multipart/form-data" );
  54. //conector.setRequestHeader( "Connection", "close" );
  55. //conector.setRequestHeader( "Content-length", buffer.length );
  56. }
  57. //-->
  58. </script>
  59.  
  60. <style typ="text/css" rel="stylesheet">
  61. <!--
  62. #contenedor_upload
  63. {
  64. margin:auto;
  65. //margin-bottom:4px;
  66. //padding:3px;
  67. width:250px;
  68. //background-color:lightblue;
  69. //border:solid #33ccff 1px;
  70. font-family:"sans-serif";font-size:10px;
  71. }
  72.  
  73. #miboton
  74. {
  75. margin:5px;
  76. }
  77. //-->
  78. </style>
  79. </head>
  80.  
  81. <body>
  82. <?php
  83. echo "Hola";
  84. echo "<p>";
  85. echo "<form method=\"POST\"  id=\"miformulario\" enctype=\"multipart/form-data\">";
  86. echo "<input type=\"file\" id=\"miarchivo\"><br>";
  87. echo "<input type=\"submit\" value=\"Enviar\" id=\"miboton\" onclick=\"enviar_datos();\">";
  88. echo "</form>";
  89.  
  90. echo "<p>";
  91. echo "<div id=\"contenedor_upload\">";
  92. //echo "sección de Carga";
  93. echo "</div>";
  94.  
  95. if( $_GET["subir"]==1 )
  96. echo "<p>Ya podemos llegar aqui xD, aleluya !!..</p>";
  97. echo "</p>";
  98. ?>
  99. </body>
  100. </html>
« Última modificación: 26 Julio 2008, 00:13 am por Diabliyo » En línea

alone-in-the-chat


Desconectado Desconectado

Mensajes: 587


Ver Perfil
Re: Aprendiendo AJAX con PHP!!
« Respuesta #3 en: 26 Julio 2008, 00:20 am »

Ok
segun entiendo intentas hacer como gmail para adjuntar archivos al correo.

La vdd no se si usaran ellos ajax pero una vez me vi en la necesidad de hacer eso, al final no use ajax , lo que hice fue apuntar el atributo target del formulario aun iframe oculto , y este se encargo de subir el archivo sin necesidad .

El problema es que al enviar el formulario debes necesariamente recargar la pagina si es que no has seteado el atributo target del formulario , ello hace que ajax no tenga sentido en estos casos por que justamente ajax se usa para evitar la recarga de la pagina.

Por eso me decidi ah emplear lo que te dije lineas arriba.

En esta misma sección se pregunto sobre eso no hace mucho , me parece.

Saludos¡¡
 
En línea

Because maybe
You're gonna be the one that saves me
And after all
You're my wonderwall
d[n_n]b
Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Aprendiendo AJAX con PHP!!
« Respuesta #4 en: 26 Julio 2008, 04:22 am »

Bueno en fin, entonces usare la manera anterior, cambiando los tiempo de ejecucion de script mediante funciones hasta subir el archivo jejeje...

Porfavor puedes leer el siguiente post que es sobre el procesamiento de datos en AJAX:

POST: http://foro.elhacker.net/php/problema_para_procesar_datos_en_ajax-t221917.0.html
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Seguridad en ajax
PHP
Gorky 3 9,839 Último mensaje 5 Enero 2012, 17:10 pm
por #!drvy
ajax
PHP
bengy 7 2,707 Último mensaje 29 Octubre 2013, 17:12 pm
por miloscorp
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines