Foros del Web » Programando para Internet » PHP »

php-ajax-javascript

Estas en el tema de php-ajax-javascript en el foro de PHP en Foros del Web. Hace unos dias me baje un script de un sitio que argumentaba ser un ajax. Osea que al correr el script subia una imagen o ...
  #1 (permalink)  
Antiguo 30/10/2008, 00:48
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
php-ajax-javascript

Hace unos dias me baje un script de un sitio que argumentaba ser un ajax.
Osea que al correr el script subia una imagen o cualquier archivo, se mantenia el mismo index.html y permanecia igual todo lo demas.
Como observe que NO estaba utilizando el httpObject me supuse que NO es Ajax, por definicion.
El script consistia en 5 archivos de imagenes un archivo css un archivo index.php y un archivo php para procesar la subida.
Decidi reducirlo a su mas minima expresion y tratar de descubrir que esta sucediendo.
El resultado final, es decir hasta donde pude llegar teniendo exito en la subida lo expongo aqui:
1.- archivo index.html
<html>
<head>
<title>Subir Archivos FRANCO7777.com</title>
<script language="javascript" type="text/javascript">
function Subida(exito) {
var resultado;
document.getElementById('').innerHTML = resultado + '<label><b>Su Archivo:<br/><input name="MiArchivo" type="file" size="7"/></label><label><input type="submit" value="Subir Archivo"/></label>';
return true;
}
</script>
</head>
<body>
<form action="SubirArchivo.php" method="post" enctype="multipart/form-data" target="Objetivo_Subida" onsubmit="Subida();">
<b>Su Archivo:</b><br/>
<input name="MiArchivo" type="file" size="25"/><br>
<input type="submit" name="submit" value="Subir Archivo"/><br>
<iframe id="Objetivo_Subida" name="Objetivo_Subida" src="#" style="width:0;height:0;border:0px solid #fff;"></iframe>
</form>
</body>
</html>
2.- el archivo php es el siguiente:
<?php
//Aqui podemos poner cualquier ubicacion!!!
$ruta_destino = getcwd().DIRECTORY_SEPARATOR;
$resultado = 0;
$ruta_final = $ruta_destino . basename( $_FILES['MiArchivo']['name']);
if(@move_uploaded_file($_FILES['MiArchivo']['tmp_name'], $ruta_final)) {
$resultado = 1;
}
sleep(1);
?>
<script language="javascript" type="text/javascript">
window.top.window.DetenerSubida(<?php echo $resultado; ?>);
</script>
Ahora bien las cosas que encontre curiosas y con dificultad de explicar son las siguientes:
a.- el document.getElementById('').innerHTML notese el ( ' ' )
b.- el form tiene como target un iframe practicamente inexistente y esta dentro del form.
c.- Recordando que a estas alturas el script funciona normalmente, cuando le quito el target y el iframe, hasta ese momento me responde con una pagina en blanco y NO sube ningun archivo.
SUS COMENTARIOS SON BIENVENIDOS
GRACIAS DE ANTEMANO
Saludos
Franco
P.S. Pareciera ser que hay cosas que NO hacen sentido logico o talvez una explcacion detallada de como ocurre todo este proceso seria muy util. El script asi como esta lo pueden probar y veran que si sube los archivos pero si se elimina el iframe queda aniquilado totalmente. Hay comunicacion asyncronoma o no la hay?.
  #2 (permalink)  
Antiguo 30/10/2008, 01:22
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: php-ajax-javascript

definitivamente no es Ajax.... es un buen truco para enviar "por debajo del agua" los datos de cualquier formulario, incluso... ya sabemos que podemos simular bastantes cosas con <iframe/>

en definitiva, voy a probar lo que nos cuentas.... igual suenan raras algunas cosas de las que hiciste hincapié, suerte!
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 30/10/2008, 01:57
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: php-ajax-javascript

Hola:

Pues sobre si es Ajax o no, podría ser un tema de debate. Según la wikipedia, también el uso de iframes puede ser considerado como parte de esa tecnología (o mezcla/combinación de tecnologías)... de lo que si es cierto, es que no usa el objeto Ajax (XMLHttpRequest/ActiveXObject)...

La explicación del sistema puedes verlo creo que bien explicado en este artículo: Revisar las imágenes antes de subirlas

Lo que no termino de comprender es lo del id=""... supongo que se trata de un error de copy&paste.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #4 (permalink)  
Antiguo 30/10/2008, 08:04
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Respuesta: php-ajax-javascript

Lo que pasa es que es un upload, y dichosos éstos por medio de XMLHttpRequest/ActiveXObject funcionan (cosa que aprendí en estos días). La única manera de hacer un upload en background es usando iframes, por eso el código.


PD: Antes de inventarse lo llamado AJAX ya se usaba esta metodología (también se usaba XMLHttpRequest/ActiveXObject, no solo del lado del cliente sino también del lado servidor).... De hecho, gmail usa (o usaba, hace mucho que no estoy al día con su tecnología) iframes ocultos donde el efecto logrado es el mismo. O sea, estoy más de con la opinión de caricatos y la wikipedia ya que ajax supuestamente fue disparado/inventado (o eso dicen muchos) desde su uso en gmail ¿¿??.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #5 (permalink)  
Antiguo 30/10/2008, 19:28
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Respuesta: php-ajax-javascript

Muchas Gracias a todos.
Y en el id= ' ' ....
Asi de esa manera funciona perfectamente.
Mi interes radica en que todo parece indicar que
la comunicacion GPRS en celulares avanza hasta tener hoy
dia celulares como el sony ericsson w200 que tiene
javascript y maneja html y xhtml sin problemas.
Utiliza el navegador netfront que maneja
la comunicacion asyncronoma.
Las plataformas en latinoamerica ya estan al dia con esta tecnologia.
Si es posible hacer esto y considerando que la conexion
gprs "popular" cobra por KB transferido, es logico pensar
que este tipo de movimientos o intercambio de info. en el background
es muy util por cuanto reduce los KB que se transfieren del
celular al operador.
Podria significar un ahorro considerable
Es decir que la pagina que les mostre anteriormente hecha con php
y recargando la index.php y observando los logs del apache, NO me queda
duda que existe un ahorro en los movimientos de bytes entre servidor y cliente.
Saludos
Franco
P.S.La combinacion javascript y php es autenticamente impresionante para los servivios wap.
  #6 (permalink)  
Antiguo 31/10/2008, 14:56
 
Fecha de Ingreso: abril-2006
Mensajes: 1.128
Antigüedad: 18 años
Puntos: 33
Respuesta: php-ajax-javascript

Conclusion:
Hice una comparacion entre hacer un upload de un archivo X de
dos maneras:
1.- El upload excluye javascript totalmente y es puro php y utiliza
los <iframes> segun lo expuse arriba.
2.- Hice un script similar o casi exactamente igual pero sin <iframes>
y utilizando php.
El primero hace que el navegador mantenga el index.html, la imagen se sube
y seguidamente se pueden hacer tantos uploads como se desea sin moverse de la misma pagina.
El segundo elimina el target <iframes>, desaparece el <iframe> y en el archivo php hice un echo"<form................> para que esto me permitiera volver a upload archivos y asi subir tantos como se desea.
Dato adicional: he analizado el log de acceso del Apache para ver cuantos bytes sirviò el servidor y asi poder dar una opinion segura del concepto de eficiencia ya que efectivamente ambos cumplen su cometido.
RESULTADO:
Sin considerar el tamaño o mejor dicho peso de las imagenes o archivos subidos que dicho sea de paso es irrelevante para mi analisis ya que para ambos es igual; se puede determinar con facilidad que hay una reducccion efectiva del 12% del movimiento de KBs transferidos o ancho de banda del script y si se hacen sucesivos uploads sin salir de la pagina el ahorro es del 99%.
Es decir que si hay que subir por x o y razon una imagen, es mucho mas eficiente hacerlo con php y <iframes> de la manera expuesta arriba. Y si hay que realizar uploads sucesivos uno tras otro la ventaja se vuelve muy alta y se acerca al 100%
Saludos
Franco
P.S. No hay duda que los "file uploads" deben hacerse con iframes, en terminos generales.
P.S.2 En cuanto a la rapidez, me he visto imposibilitado de analisar en detalle esto; pero es obvio que al haber
menos bytes transferidos por concepto del peso del script, de igual manera el tiempo debiera reducirse en favor del que consume menos bytes. Visto todo esto, cuando hay grandes volumenes deben existir ahorros considerables
  #7 (permalink)  
Antiguo 31/10/2008, 15:51
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: php-ajax-javascript

Hola franco190453,

Recuerda que las herramientas existen por algo, hay muchas veces formularios muy complejos no se podrían enviar completamente con AJAX.

Por otro lado me cuesta mucho trabajo leer tus mensajes, trata de poner las oraciones completas ya que de la forma que escribes todo pegado y con saltos de linea entre los parrafos hace un poco dificíl seguir la lectura.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 21:33.