lunes, mayo 29, 2006

Traducción de Artículo de Ajax XV

Inconsistencia de navegadores
Una vez que tenes un entendimiento básico de este proceso, trata de acceder desde varios navegadores diferentes. Deberías notar algunas inconsistencias en como estos estados ready son manipulados. Por ejemplo en Firefox 1.5, ves los siguientes estados ready:
  • 1
  • 2
  • 3
  • 4
Esto no debería ser una sorpresa ya que todos los estados están representados acá. Sin embargo si accedes la misma aplicación usando Safari, deberías ver --o mas, no ver-- algo interesante. Acá están los estados que ves en Safari 2.0.1
  • 2
  • 3
  • 4
Safari realmente deja afuera el primer estado ready y no hay una explicación sensata de porqué; es simplemente la manera en que trabaja Safari. Esto ilustra también un punto importante: mientras es una buena idea asegurar que el estado Ready de una petición sea 4 antes de usar la información del servidor, escribir código que dependa de cada cambio del estado ready es una manera segura de obtener resultados distintos en navegadores distintos.
Por ejemplo, cuando se usa Opera 8.5, las cosas son todavía peores con la salida de los estados ready:
  • 3
  • 4
Por último pero no menos, Internet Explorer responde con los siguientes estados:
  • 1
  • 2
  • 3
  • 4
Si tienes problemas con una petición, este es el primer lugar para buscar los problemas. Agrega un alerta para mostrar el estado ready de tu petición para que puedas asegurarte de que las cosas estan operando correctamente. Mejor todavía, prueba en Internet Explorer y Firefox--vas a obtener los 4 estados readyy vas a poder controlar cada etapa de la petición.
Luego yo miro el lado de la respuesta.
Información de respuesta bajo el microscopio
Una vez que entiendas los varios estados ready que ocurren durante una petición, estás listo para mirar otra pieza importante del objeto XMLHttpRequest --la propiedad responseText. Recuerda del último artículoque esta es la propiedad usada para obtener la información del servidor. Una vez que el servidor ha terminado de procesar la petición, situa toda información que se necesita para responder la petición en el responseText de la petición. Luego tu función de rellamada puede usar esa información, como se ve en el listing1 y 4.
Listing 4. Usar la respuesta del servidor


function updatePage() {
if(request.readyState == 4) {
var newTotal = request.responseText;
var totalSoldEl = document.getElementById("total-sold");
var netProfitEl = document.getElementById("net-profit");
replaceText(totalSoldEl, newTotal);
/*Descubrir la nueva ganancia neta*/
var boardCostEl = document.getElementById("board-cost");
var boardCost = getText(boardCostEl);
var manCostEl = document.getElementById("man-cost");
var manCost = getText(manCostEl);
var profitPerBoard = boardCost - manCost;
var netProfit = profitPerBoard * newTotal;
/*Actualizar la ganancia neta el el formulario de ventas*/
netProfit = Math.round(netProfit *100)/100;
replaceText (netProfitEl, netProfit);
}
}

El Listing 1 es bastante simple; el Listing 4 es un poco mas complicado, pero para empezar, ambos controlan el estado ready y luego toman el valor (o valores) de la propiedad responseText.
Visualizar el texto de respuesta durante una petición
Como el estado ready, el valor de la propiedad responseText cambia durante el ciclo de vida de la petición. Para ver esto en acción, usa el código como el que se muestra en el listing 5 para probar el texto de respuesta de una petición, tal como los estados ready.
Listing 5. Probar la propiedad responseText

function updatePage(){
//Mostrar el estado ready actual
alert("updatePage() llamada con el estado ready en " + request.readyState + " y un texto de respuesta de '" + request.responseText + "'");
}


Ahora abre tu aplicación Web en un navegador y activa tu petición. Para obtener lo maximo de este código, usa Firefox o Internet Explorer ya que estos navegadores reportan todos los estados posibles durante una petición. Con un estado ready en 2, por ejemplo, la propiedad responseText es indefinida (ver figura 3) y deberías ver un error si la consola JavaScript está abierta tambien.
Figura 3. Texto de respuesta con un estado ready en 2



Con el estado ready en 3 sin embargo, ha colocado un valor en la propiedad responseText, al menos en este ejemplo (ver figura 4).
Figura 4: Texto de respuesta con un estado ready en 3

Vas a descubrir que tu respuesta en el estado ready 3 varía de scritp a script, servidor a servidor y navegador a navegador. SIn embargo esto aun es increiblemente util para eliminar errores de tu aplicación.

Etiquetas:

2 Decí algo:

At 6/11/2006 7:41 p. m., Anonymous Anónimo dijo...

What a great site, how do you build such a cool site, its excellent.
»

 
At 7/21/2006 5:35 a. m., Anonymous Anónimo dijo...

Your website has a useful information for beginners like me.
»

 

Publicar un comentario

<< Casa?