Diferencia entre revisiones de «AJAX»

Contenido eliminado Contenido añadido
m Revertidos los cambios de 200.121.3.86 (disc.) a la última edición de Txopi
Línea 3:
Ajax es una tecnología asíncrona, en el sentido de que los datos adicionales se requieren al servidor y se cargan en segundo plano sin interferir con la visualización ni el comportamiento de la página. [[JavaScript]] es el lenguaje interpretado (scripting language) en el que normalmente se efectúan las funciones de llamada de Ajax mientras que el acceso a los datos se realiza mediante ''[[XMLHttpRequest]]'', objeto disponible en los navegadores actuales. En cualquier caso, no es necesario que el contenido asíncrono esté formateado en [[XML]].
 
Ajax es una técnica válida para múltiples plataformas y utilizable en muchos sistemas operativos y navegadores dado que está basado en estándares abiertos como JavaScript y [[Document Object Model]] (DOM).
 
 
== Tecnologías incluidas en AJAX ==
AJAX es una combinación de cuatro tecnologías ya existentes:
* [[XHTML]] (o [[HTML]]) y [[hojas de estilos en cascada]] (CSS) para el diseño que acompaña a la información.
* [[Document Object Model]] (DOM) accedido con un lenguaje de scripting por parte del usuario, especialmente implementaciones [[ECMAScript]] como [[JavaScript]] y [[JScript]], para mostrar e interactuar dinámicamente con la información presentada.
* El objeto [[XMLHttpRequest]] para intercambiar datos de forma asíncrona con el servidor web. En algunos [[framework]]s y en algunas situaciones concretas, se usa un objeto <tt>[[iframe]]</tt> en lugar del XMLHttpRequest para realizar dichos intercambios.
* [[XML]] es el [[formato]] usado generalmente para la transferencia de datos solicitados al servidor, aunque cualquier formato puede funcionar, incluyendo HTML preformateado, texto plano, [[JSON]] y hasta [[EBML]].
 
Como el [[DHTML]], [[LAMP]] o SPA, AJAX no constituye una tecnología en sí, sino que es un término que engloba a un grupo de éstas que trabajan conjuntamente.
 
== Antecedentes de AJAX ==
A pesar de que el término «AJAX» fuese creado en 2005, la historia de las tecnologías que permiten AJAX se remonta a una década antes con la iniciativa de [[Microsoft]] en el desarrollo de [[Scripting Remoto]]. Sin embargo, las técnicas para la carga asíncrona de contenidos en una página existente sin requerir recarga completa remontan al tiempo del elemento <tt>iframe</tt> (introducido en Internet Explorer 3 en 1996) y el tipo de elemento <tt>layer</tt> (introducido en Netscape 4 en 1997, abandonado durante las primeras etapas de desarrollo de Mozilla). Ambos tipos de elemento tenían el atributo <code>src</code> que podía tomar cualquier dirección [[URL]] externa, y cargando una página que contenga [[javascript]] que manipule la página paterna, pueden lograrse efectos parecidos al AJAX.
 
El Microsoft's Remote Scripting (o MSRS, introducido en [[1998]]) resultó un sustituto más elegante para estas técnicas, con envío de datos a través de un [[applet Java]] el cual se puede comunicar con el cliente usando JavaScript. Esta técnica funcionó en ambos navegadores, Internet Explorer versión 4 y Netscape Navigator versión 4. Microsoft la utilizó en el [[Outlook Web Access]] provisto con la versión 2000 de [[Microsoft Exchange Server]].
 
La comunidad de desarrolladores web, primero colaborando por medio del [[grupo de noticias]] ''[http://groups.google.es/group/microsoft.public.scripting.remote/topics?lnk=gschg&hl=es microsoft.public.scripting.remote]'' y después usando [[blog]]s, desarrollaron una gama de técnicas de scripting remoto para conseguir los mismos resultados en diferentes navegadores. Los primeros ejemplos incluyen la biblioteca [[Scripting remoto en Javascript|JSRS]] en el año 2000, la introducción a la técnica [[imagen/cookie]]<ref name="tecnica_imagen_cookie">[http://www.depressedpress.com/Content/Development/JavaScript/Articles/GIFAsPipe/Index.cfm Using a GIF as a Data Pipe], explicación y ejemplo de uso de la técnica imagen/cookie (en inglés).</ref> en el mismo año y la técnica [[JavaScript bajo demanda]] (JavaScript on Demand)<ref name="js_on_demand">[http://dotvoid.com/view.php?id=13 Remote scripting with javascript], Explicación y ejemplo de procesar un archivo JavaScript bajo demanda (en inglés).</ref> en 2002. En ese año, se realizó una modificación por parte de la comunidad de usuarios<ref name="modif_usuarios_MSRS_applet_por_js">[http://groups.google.ca/group/microsoft.public.scripting.remote/browse_thread/thread/99b7e6152b45b2e7/6b3689e2dc7401dc microsoft.public.scripting.remote], sustitución del applet Java por el objeto XMLHttpRequest (en inglés).</ref> al ''Microsoft's Remote Scripting'' para reemplazar el applet Java por [[XMLHttpRequest]].
 
[[Framework]]s de Scripting Remoto como el [[ARSCIF]]<ref name="arscif">[http://arscif.dsi.unimi.it/ ARSCIF], A Framework for Asynchronous Remote–Script Callback Invocation (en inglés)</ref> aparecieron en 2003 poco antes de que [[Microsoft]] introdujera Callbacks en [[Active Server Pages|ASP]]. NET.<ref name="callback_en_ASPNET">[http://msdn.microsoft.com/msdnmag/issues/04/08/CuttingEdge/ Script Callbacks in ASP.NET (en inglés)]</ref>
 
Desde que XMLHttpRequest está implementado en la mayoría de los navegadores, raramente se usan técnicas alternativas. Sin embargo, todavía se utilizan donde se requiere una mayor compatibilidad, una reducida implementación, o acceso cruzado entre sitios web. Una alternativa, el [[Terminal SVG]]<ref name="svgt">[http://networkimprov.net/airwrx/awscene.html protocolo SVGT] (en inglés).</ref> (basado en [[Scalable Vector Graphics|SVG]]), emplea una conexión persistente para el intercambio continuo entre el navegador y el servidor.
 
== Navegadores que permiten AJAX ==
Ha de tenerse en cuenta que ésta es una lista general, y el soporte de las aplicaciones AJAX dependerá de las características que el navegador permita.
* Navegadores basados en [[Gecko (motor de navegación)|Gecko]] como [[Mozilla Application Suite|Mozilla]], [[Mozilla Firefox]], [[SeaMonkey]], [[Camino (navegador)|Camino]], [[K-Meleon]], [[IceWeasel]], [[Flock]], [[Epiphany]], [[Galeon]] y [[Netscape]] versión 7.1 y superiores
* [[Google Chrome]]
* [[Microsoft]] [[Internet Explorer]] para Windows versión 5.0 y superiores, y los navegadores basados en él
* Navegadores con el [[Interfaz de programación de aplicaciones|API]] [[KHTML]] versión 3.2 y superiores implementado, incluyendo [[Konqueror]] versión 3.2 y superiores, [[Apple Computer|Apple]] [[Safari (navegador)|Safari]] versión 1.2 y superiores, y el Web Browser for S60 de [[Nokia]] tercera generación y posteriores
* [[Opera (navegador)|Opera]] versión 8.0 y superiores, incluyendo [[Opera (navegador)|Opera Mobile Browser]] versión 8.0 y superiores.
 
== Navegadores que no permiten AJAX ==
* Opera 7 y anteriores
* Microsoft Internet Explorer para Windows versión 4.0 y anteriores
* Safari 1.2 y anteriores
* [[Dillo]]
* Navegadores basados en texto como [[Lynx (navegador)|Lynx]] y [[Links]]
* Navegadores para incapacitados visuales ([[Braille (lectura)|Braille]])
 
== Véase también ==
<!-- En orden alfabético -->
* [[AjaxCFC]]
* [[AjaXSLT]]
* [[FJAX]]
* [[Streaming|HTTP Streaming]]
* [[JSON|JSON, AJAX sin XML]]
* [[Open Ajax]]
* [[Progressive Enhancement]]
* [[Rich Internet Application]]
* [[Sajax]]
* [[Single Page Application]]
* [[AjaxCore]] AJAX for PHP made easy
* [[Xajax]] ajax for PHP
* [[XMLHttpRequest]]
 
== Referencias ==
{{listaref}}
 
== Enlaces externos ==
<!-- ¡AVISO!: Este no es el mejor lugar para hacer publicidad de su negocio o página web. Los enlaces no afectan su popularidad en Google u otros buscadores. Considere esto antes de incorporar un nuevo enlace.
Los enlaces deben aportar información complementaria y relevante al artículo, de lo contrario no tienen cabida. Más información sobre "lo que Wikipedia no es" en:
Más información sobre "lo que Wikipedia no es" en:
http://es.wikipedia.org/wiki/Wikipedia:Lo_que_Wikipedia_no_es
-->
*[http://www.elrincondeajax.com/manual-ajax/ Manual de AJAX] Completo tutorial en PDF de la técnica de programación con fuentes y varios videos
*[http://www.uberbin.net/archivos/internet/ajax-un-nuevo-acercamiento-a-aplicaciones-web.php AJAX un nuevo acercamiento a Aplicaciones Web], traducción del artículo original de Jesse James Garret
*[http://sherekan.com.ar/blog/2008/04/19/introduccion-a-ajax/ Introducción a AJAX] (en español)
*[http://ajax.asp.net/ AJAX: The Official Microsoft ASP.NET AJAX Site] Sitio oficial de Microsoft (en inglés)
*[http://search.cpan.org/search?query=Ajax&mode=all Ajax] Módulos [[Perl]] en [[CPAN]] (en inglés)
*[http://www.ajaxdaddy.com AjaxDaddy] Galería de ejemplos y su correspondiente código
*[http://www.librosweb.es/ajax/index.html Introducción a AJAX] Comenzando desde cero y llegando hasta las técnicas más avanzadas (Contenido en web y en PDF).
*[http://www.programacionweb.net/cursos/curso.php?num=2 Curso de AJAX]
*[http://www.preguntaalexperto.net/articles/miaconoComo-crear-un-motor-AJAX.aspx Como crear un motor AJAX (parte I)] Artículo sobre Como crear un motor AJAX.
*[http://www.preguntaalexperto.net/articles/miacono-Como-crear-un-Motor-AJAX---Parte-II.aspx Como crear un motor AJAX (parte II)] La continuación.
*[http://soaagenda.com/journal/articulos/el-mejor-ejemplo-dwr-o-el-mejor-tutorial-dwr/ Referencias de AJAX, y un buen ejemplo AJAX DWR]
 
{{bueno|de}}
 
[[Categoría:Navegadores web]]
[[Categoría:Acrónimos de informática]]
[[Categoría:XML]]
 
[[af:AJAX]]
[[ar:أجاكس]]
[[bg:AJAX]]
[[bn:এজ্যাক্স (ওয়েব প্রোগ্রামিং কৌশল)]]
[[ca:Ajax (programació)]]
[[cs:Asynchronous JavaScript and XML]]
[[da:Ajax (programmering)]]
[[de:Ajax (Programmierung)]]
[[en:Ajax (programming)]]
[[eu:Ajax (programazioa)]]
[[fa:آژاکس (برنامه‌نویسی)]]
[[fi:Ajax (ohjelmointi)]]
[[fr:Asynchronous JavaScript and XML]]
[[ga:AJAX]]
[[gl:AJAX]]
[[he:AJAX (תכנות)]]
[[hu:Ajax (programozás)]]
[[hy:AJAX]]
[[id:AJAX]]
[[it:AJAX]]
[[ja:Ajax]]
[[ka:Ajax]]
[[ko:Ajax]]
[[lt:AJAX]]
[[mk:AJAX]]
[[ml:അജാക്സ് (കംപ്യൂട്ടര്‍ പ്രോഗ്രാമിങ്ങ്)]]
[[mn:Ajax (программчлал)]]
[[ms:Ajax]]
[[nl:Asynchronous JavaScript and XML]]
[[nn:AJAX]]
[[no:Ajax (programmering)]]
[[pl:AJAX]]
[[pt:AJAX (programação)]]
[[ro:Ajax (programare)]]
[[ru:AJAX]]
[[sl:AJAX (programiranje)]]
[[sq:Ajax (programim)]]
[[sv:AJAX]]
[[ta:ஏஜாக்ஸ்]]
[[th:เอแจ็กซ์]]
[[tk:Ajax (programmirleme)]]
[[tr:AJAX (programlama)]]
[[uk:AJAX]]
[[vi:Ajax (lập trình)]]
[[zh:AJAX]]