2009-02-05 3 views
5

He estado leyendo en Ajax y me gustaría ver de la comunidad stackoverflow si estoy entendiendo todo correctamente.¿Comprendo Ajax correctamente?

Entonces, la interacción normal del servidor cliente es que un usuario levanta un navegador web en una URL y se envía una solicitud HTTP al servidor solicitando la página y los recursos (css, pics) del servidor web. El servidor web responde al cliente a través de HTTP la página/recursos solicitados y el navegador representa html/JavaScript para que el usuario vea la página.

1) Entonces, ¿sería seguro decir que el objeto XMLHttpRequest (XHR) está haciendo el mismo proceso que el navegador, excepto que no está solicitando html desde el servidor, ¿está solicitando texto en algún tipo de formato?

2) ¿Es cierto que un objeto XHR es muy parecido a un objeto normal que puede ser manipulado por el programa creando el objeto (como un objeto normal), pero también envía y recibe datos con otro programa (servidor web) HTTP?

3) Así que en mi mente cuando se crea un XHR, se carga en la memoria y configuramos algunos de los argumentos de los objetos cuando hacemos el request.open ("GET", url, true). Una vez que hacemos un request.send (null), el objeto básicamente intenta "OBTENER" la URL a través de HTTP y una vez que recibimos los datos del servidor, se coloca en el argumento responseText. ¿Estoy entendiendo esto correctamente?

4) También síncrono vs asíncrono. Cuando pienso en sincrónico, pienso en pasos que deben seguirse en orden. Por ejemplo, presiono un botón, los datos se envían al servidor, y tengo que esperar a que vuelvan los datos para poder hacer cualquier otra cosa. Con las conexiones asíncronas presionaré el botón, los datos se enviarán al servidor, hago lo que quiera mientras se envían los datos. ¿Es esta una buena analogía?

Respuesta

7

1) No. El objeto XMLHttpRequest hace exactamente lo que su nombre implica: inicia una solicitud HTTP. Esta solicitud puede ser en XML, o HTML, o PHP. Al final del día, al navegador no le importa, porque en una solicitud AJAX, no analiza la solicitud, usted debe hacerlo usted mismo. Por lo tanto, no procesa automáticamente el HTML de una solicitud AJAX.

2) No estoy seguro sobre la manipulación (el objeto XHR puede ser inmutable) pero posiblemente. ¿Alguna vez necesitarías extenderlo o manipularlo? Sí, puede cambiar las propiedades del objeto, etc. Me disculpo. No te entendí al principio :)

3) Sip.

4) Esa es una gran analogía. Es exactamente lo que sucede. Otra analogía es que una carretera de 4 carriles es asincrónica, ya que una calle de sentido único es sincrónica. Si un auto se descompone en la autopista de 4 carriles, el resto puede seguir moviéndose a su velocidad normal, pero si se descompone en la carretera de sentido único, todo se congela. :)

+0

creo manipular el XHR propiedades de deformación sólo la intención y los métodos de compra sobre el objeto. – andynormancx

+0

La mayoría de las calles de sentido único que he visto son de varios carriles ... :) –

0

Parece que tiene un conocimiento del trabajo de cómo funciona AJAX. No veo mucho con lo que no estoy de acuerdo en su resumen de la instalación de una aplicación AJAX.

Sin embargo, diría que con el objeto XMLHttpRequest no está restringido a GET. También puede usar POST y otros verbos HTTP.

Con las llamadas asincrónicas, registra una función de devolución de llamada, el objeto XMLHttpRequest llama a su método cuando finaliza la solicitud asincrónica.

0

Me parece bien.

Sin embargo, su primer punto no es del todo correcto, puede solicitar html desde el servidor utilizando ajax no tiene que text, json o xml como muestran la mayoría de los ejemplos.