[Php-avanzado] otra de ajax

Leonardo Tadei - Pegasus Tech Supply leonardot en pegasusnet.com.ar
Lun Mayo 27 19:38:43 ART 2013


Hola Ariel,

El lun, 27-05-2013 a las 18:24 -0300, Ariel Fernández escribió:
> Leo, otra vez yo !   el problema que tiene el código es que el
> xmlHttp.readyState se queda en 1 cuando la función updatePage verifica
> su estado, por eso no me actualiza los datos en la página, porque no
> entra nunca en el if xmlHttp.readyState == 4.

	Bueno, pero salvo que lo pises con otra petición el valor de readyState
tiene que ir cambiando. De hecho, si no cambiara, no recibirías nada
como respuesta...

> Lo que no sé es por qué devuelve el estado "Cargando"....si al ratito
> puedo ver en el responseText que ahi está lo que necesito !! 

	Tal vez simplemente lo estés debuggeando mal: los cambios de estado por
evento se ven solo adentro del propio evento que los genera.

	Lo de que Apache bajo MS Windows tarde 1 segundo en responder no está
mal... para más velocidad tendrías que usar un sistema operativo que no
sea de escritorio, como por ejemplo GNU/Linux.

	Llevate el código al curso y lo desarmamos en clase para ver qué es lo
que hace!


> 
> Mirá, ésto es lo que me muestra el depurador nativo de Firefox que me
> recomendaste:
> 
> 
> [18:15:40.351] POST
> http://localhost/Avanzado/ejercicios_clase_5/leeProv.php [HTTP/1.1 200
> OK 1013ms]
> 
> 
> 
> Cabeceras de la respuesta
>     Δ1013ms
>   
>   X-Powered-By:PHP/5.4.3Server:Apache/2.4.2 (Win64)
> PHP/5.4.3Keep-Alive:timeout=5, max=97Date:Mon, 27 May 2013 21:15:40
> GMTContent-Type:text/htmlContent-Length:1034Connection:Keep-Alive
> 
> 
>   
> 
>     
>       Cuerpo de la respuesta
>       Δ0ms
>     
>     <select name="" id="">
> <option value="">Seleccione provincia...</option>
> <option value="1">Buenos Aires</option>
> <option value="2">Buenos Aires-GBA</option>
> <option value="3">Capital Federal</option>
> <option value="4">Catamarca</option>
> <option value="5">Chaco</option>
> <option value="6">Chubut</option>
> <option value="7">Córdoba</option>
> <option value="8">Corrientes</option>
> <option value="9">Entre Ríos</option>
> <option value="10">Formosa</option>
> <option value="11">Jujuy</option>
> <option value="12">La Pampa</option>
> <option value="13">La Rioja</option>
> <option value="14">Mendoza</option>
> <option value="15">Misiones</option>
> <option value="16">Neuquén</option>
> <option value="17">Río Negro</option>
> <option value="18">Salta</option>
> <option value="19">San Juan</option>
> <option value="20">San Luis</option>
> <option value="21">Santa Cruz</option>
> <option value="22">Santa Fe</option>
> <option value="23">Santiago del Estero</option>
> <option value="24">Tierra del Fuego</option>
> <option value="25">Tucumán</option>
> </select>
> 
> 
> 
> 
> o sea, ahí está el select del que te hablé....lo que me parece extraño
> es ese tiempo de 1013ms que me marca en la cabecera...eso no es mucho
> tiempo de demora ?
> bueno, te adelantaba algo porque sigo probando, pero el jueves si no,
> lo vemos bien.
> 
> 
> 
> 
> El 27 de mayo de 2013 15:57, Ariel Fernández <arielf05 en gmail.com>
> escribió:
>         Ah, ok lo del ejemplo. 
>         Sí Leo, eso hice, utilicé dos variables, y entiendo lo del
>         ámbito de las variables, si cuando tenía una sola
>         funcionaba... pero debo tener algo mal con eso, porque las
>         llamadas no son simultáneas, una es cuando se carga la página
>         y la otra en un change de un select. 
>         Y si no funciona, lo cargaré con php al comienzo y listo, y
>         uso ajax sólo una vez para el select. De última lo vemos bien
>         el jueves. 
>         
>         El may 27, 2013 3:27 p.m., "Leonardo Tadei - Pegasus Tech
>         Supply" <leonardot en pegasusnet.com.ar> escribió:
>         
>                 Hola Ariel,
>                 
>                 El dom, 26-05-2013 a las 21:53 -0300, Ariel Fernández
>                 escribió:
>                 > Leo, se pueden definir más de un objeto
>                 xmlHttpRequest ? o con uno
>                 > solo alcanza para todas las peticiones al servidor
>                 de todas las
>                 > funciones?
>                 
>                         Se puede. De hecho mostré justo esto en el
>                 ejemplo del software que
>                 había llevado.
>                         La pregunta es si es necesario tener más de
>                 uno...
>                 
>                 > porque resulta que ahora agregué una función más que
>                 utiliza el
>                 > objeto, y me dejó de andar todo!
>                 > en la llamada a la función que actualiza la página,
>                 me dice que no
>                 > existe el xmlhttp
>                 > siendo que el objeto está inicializado al principio.
>                 
>                         Si las peticiones al servidor las hacés
>                 asincrónicas, tenés que tener
>                 cuidado de no usar un XMLHTTPRequest desde una
>                 función, y antes de que
>                 termine usarlo desde otra, porque la 2da llamada
>                 interrumpe la primera y
>                 al resetearla deja las cosas en estado inconsistente.
>                 
>                 > También probé de iniciar un nuevo ambiente ajax en
>                 cada función, pero
>                 > es como si la variable readyState fuera sólo local y
>                 no global, porque
>                 > cuando se llama a la función para actualizar (en la
>                 comprobación
>                 > readyState==4), me dice que la variable esa no está
>                 definida....acaso
>                 > hay que hacerla global de alguna forma? o tal vez se
>                 puede usar un
>                 > solo objeto ajax....
>                 
>                         Recordá lo que vimos de ámbito de variables:
>                 en JS el ámbito es de
>                 fuera hacia adentro, pero no de dentro hacia afuera.
>                 Seguramente es por
>                 eso que la variable no es visible desde la función.
>                 
>                         Si hay dos peticiones simultaneas, tenés que
>                 usar dos variables de tipo
>                 XMLHTTPRequest, una para cada llamada.
>                 
>                         Saludos!
>                 
>                 
>                 --
>                 Leonardo Tadei
>                 leonardot en pegasusnet.com.ar
>                 Web: http://leonardo.tadei.com.ar
>                 Firma pública:
>                 http://www.pegasusnet.com.ar/LeonardoTadei-public.key
>                 
>                 _______________________________________________
>                 Php-avanzado mailing list
>                 Php-avanzado en pato2.fi.mdp.edu.ar
>                 http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado
> 
> 
> _______________________________________________
> Php-avanzado mailing list
> Php-avanzado en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-avanzado

-- 
Leonardo Tadei
leonardot en pegasusnet.com.ar
Web: http://leonardo.tadei.com.ar
Firma pública: http://www.pegasusnet.com.ar/LeonardoTadei-public.key



Más información sobre la lista de distribución Php-avanzado