2009-09-29 10 views
8

Habiendo sido principalmente un programador del lado del servidor (ASP.NET WebForms) estoy tratando de que mi mente se desvíe de AJAX fuera del enfoque "general" de usar UpdatePanels en los controles Microsoft AJAX. Mi pregunta tiene un par de partes:Entender AJAX

  1. ¿Es JavaScript la única opción para las secuencias de comandos del lado del cliente que admitirá la comunicación del lado del servidor? Si no, cuales son las alternativas.
  2. ¿Cuál es la arquitectura "general" de una aplicación AJAX? ¿Es simplemente JavaScript (secuencia de comandos del lado del cliente) que interactúa con los recursos del lado del servidor (datos/funcionalidad remota expuesta a través de los servicios web)? Sé que estas pueden parecer preguntas simples, pero dado los "matices" de JavaScript, AJAX todavía me parece un poco "magia negra". ¡Gracias!

Respuesta

8

Aquí está la versión corta y dulce.

  1. No, pero es realmente el único idioma admitido en una amplia gama de navegadores. Si solo te importa IE puedes usar VBScript, pero no es un esfuerzo extra usar JS y obtener un soporte más amplio, así que prácticamente todo el mundo usa JS.

  2. AJAX no es tan complicado como parece. En pocas palabras, es un código del lado del cliente que se ejecuta en el navegador para modificar el diseño o el contenido de la página actual en función de los datos que consulta desde el servidor web utilizando el objeto XMLHttpRequest.

Lo más complicado es tratar con las diferentes sintaxis/comportamientos de los diferentes navegadores, lo cual es la razón por la mayoría de la gente utiliza un marco que abstrae la mayor parte de esa distancia.

Aquí es un script sencillo "Hello World" utilizando AJAX:

<script type="text/javascript"> 
var http = createRequestObject(); 
function createRequestObject() { 
    var objAjax; 
    var browser = navigator.appName; 
    if(browser == "Microsoft Internet Explorer"){ 
     objAjax = new ActiveXObject("Microsoft.XMLHTTP"); 
    }else{ 
     objAjax = new XMLHttpRequest(); 
    } 
    return objAjax; 
} 

function getNewContent(){ 
http.open('get','newcontent.txt'); 
http.onreadystatechange = updateNewContent; 
http.send(null); 
return false; 
} 

function updateNewContent(){ 
if(http.readyState == 4){ 
document.getElementById('mySentence').innerHTML = http.responseText; 
} 
} 
</script> 

Fuente: http://www.openhosting.co.uk/articles/webdev/5899/

La última complicación es analizar lo que recibe desde el servidor en una forma adecuada que la el código puede tratar. Los optons más comunes son:

  • JSON: un análisis sintáctico fácilmente en objetos usando la función EVAL de JavaScript. Agradable para extraer información sobre una sola entidad con múltiples atributos .

  • XML: Algo fácilmente analiza el uso de los métodos DOM integradas en JS, pero más complejo que JSON. Si necesita mucho más control o quiere hacer transformaciones XSLT , esta es una opción decente. En teoría, podría considerarse un poco más seguro porque no requiere pasar cadenas arbitrarias en EVAL que podrían ejecutar código malicioso en el cliente, pero esto es discutible.

  • texto no estructurado: Si lo que desea es un único valor de nuevo, los otros dos métodos puede ser un poco excesivo.

+2

Sí, casi resume todo mejor que mi ensayo, gracias John :) – jakeisonline

2

AJAX es generalmente el intercambio, el corredor si se desea, de datos entre el lado del cliente y del lado del servidor, y por supuesto viceversa.

El avance de AJAX ha venido de la mano con el auge de Open Source, la Web "Social" y una red en expansión de desarrolladores tanto aficionados como profesionales. Esto a su vez ha provocado el desarrollo de muchos Frameworks de JavaScript (jQuery, Prototype, Mootools, Glow etc.) que esencialmente eliminan, o al menos enmascaran muy bien, esos "matices" que mencionaste.

AJAX no es simplemente un script del lado del cliente que interactúa con un script del lado del servidor. XHTML y CSS para presentación, el modelo de objetos de documento para visualización dinámica e interacción con datos, XML y XSLT (y más recientemente, JSON) para el intercambio, y manipulación y visualización de datos, respectivamente, el objeto XMLHttpRequest para comunicación asincrónica y luego, finalmente, JavaScript para unir estas tecnologías (wikipedia).

AJAX/JavaScript no es la única solución del lado del cliente, otras soluciones establecidas como Java y Flash, por ejemplo, todavía tienen su lugar. Pero JavaScript es, en la mejor parte, ampliamente compatible con todos los navegadores modernos, y de hecho los motores JavaScript de estos navegadores están ganando velocidad rápidamente, abriendo muchas más posibilidades para una interacción perfecta entre el front-end y el back-end.

espero no Waffle demasiado, se preguntó;)

-1

JavaScript VbScript alternativa (si tengo que nombrar a uno y ten en cuenta que es la tecnología EM y sólo funciona con IE), pero JavaScript en términos prácticos es universalmente solución aceptada para el scripting del lado del cliente.

Por favor, consulte a continuación Ajax SO discusiones:

2

Es la única opción JavaScript para de script del lado del cliente que se soporte de comunicaciones del lado del servidor? Si no son las alternativas.

Sí, Javascript es lo que va a utilizar. Si bien puede haber otras opciones disponibles como VBScript, querrá usar Javascript porque es la más ampliamente adoptada.

¿Cuál es la arquitectura "general" de una aplicación AJAX? ¿Es simplemente JavaScript (secuencia de comandos del lado del cliente) que interactúa con los recursos del lado del servidor (funcionalidad de datos/remota expuesta a través de servicios web)?

Eso es exactamente correcto. Los servicios web o los manejadores genéricos brindan los datos necesarios en formato JSON o XML, los cuales pueden procesarse fácilmente con Javascript.

En mi opinión, el aspecto asincrónico de AJAX que se desliza hacia la mayoría de los desarrolladores de formularios web ASP.NET es asincrónico.

+0

¿Podría dar más detalles sobre el "aspecto asincrónico"? – Achilles

0

Todas las respuestas actuales son buenas pero descuidan un punto. AJAX no es un script o lenguaje o tecnología como tal, no se puede escribir algo 'en' AJAX. AJAX es solo un término de agrupamiento.

Esto es de Wikipedia:

Como DHTML y LAMP, AJAX no es una tecnología en sí mismo, sino un grupo de tecnologías. AJAX utiliza una combinación de:

  • HTML y CSS para marcar y diseñar información.
  • El DOM al que se accede con JavaScript para mostrar dinámicamente e interactuar con la información presentada.
  • Un método para intercambiar datos de forma asíncrona entre el navegador y el servidor, evitando así las recargas de página. El objeto XMLHttpRequest (XHR) se usa generalmente, pero a veces se usa un objeto IFrame o una etiqueta añadida dinámicamente.
  • Un formato para los datos enviados al navegador. Los formatos comunes incluyen XML, HTML preformateado, texto plano y JavaScript Object Notation (JSON). Esta información podría ser creada dinámicamente por alguna forma de scripting del lado del servidor.