Tutorial JS

JS INICIO JS Introducción JS Dónde Salida JS Declaraciones JS Sintaxis JS Comentarios JS Variables JS JS Vamos Constante JS Operadores JS Aritmética JS Tarea JS Tipos de datos JS Funciones JS Objetos JS Eventos JS Cadenas JS Métodos de cadena JS Búsqueda de cadenas JS Plantillas de cadena JS Números JS Métodos numéricos JS Matrices JS Métodos de matriz JS Clasificación de matriz JS Iteración de matriz JS Constante de matriz JS Fechas JS Formatos de fecha JS Métodos de obtención de fecha JS Métodos de configuración de fechas JS Matemáticas JS JS al azar Booleanos JS Comparaciones JS Condiciones JS Interruptor JS Bucle JS para Bucle JS para entrada Bucle JS para de Bucle JS mientras descanso JS Iterables JS Conjuntos JS Mapas JS JS Tipo de Conversión de tipo JS JS bit a bit JS expresión regular Errores JS Alcance JS JS Elevación Modo estricto JS JS esta palabra clave Función de flecha JS Clases JS JSJSON Depuración JS Guía de estilo JS Prácticas recomendadas de JS Errores JS Rendimiento JS Palabras reservadas de JS

Versiones JS

Versiones JS JS 2009 (ES5) JS 2015 (ES6) JS 2016 JS 2017 JS 2018 JS IE / Borde Historia de JS

Objetos JS

Definiciones de objetos Propiedades del objeto Métodos de objeto Visualización de objetos Accesores de objetos Constructores de objetos Prototipos de objetos Objeto iterables Conjuntos de objetos Mapas de objetos Referencia de objeto

Funciones JS

Definiciones de funciones Parámetros de función Invocación de función Llamada de función Función Aplicar Cierres de funciones

Clases JS

Introducción a la clase Herencia de clase Clase estática

JS asíncrono

Devoluciones de llamada JS JS asíncrono Promesas JS JS asíncrono/espera

JS HTML DOM

Introducción al DOM Métodos DOM Documento DOM Elementos DOM DOM HTML Formularios DOM DOM CSS Animaciones DOM Eventos DOM Oyente de eventos DOM Navegación DOM Nodos DOM Colecciones DOM Listas de nodos DOM

Lista de materiales del navegador JS

Ventana JS Pantalla JS Ubicación de JS Historia de JS Navegador JS Alerta emergente JS Tiempo JS Galletas JS

API web de JS

Introducción a la API web API de formularios web API de historial web API de almacenamiento web API de trabajo web API de búsqueda web API de geolocalización web

JS AJAX

Introducción a AJAX AJAX XMLHttp Solicitud AJAX Respuesta AJAX Archivo XML AJAX AJAXPHP Ajax ASP Base de datos AJAX Aplicaciones AJAX Ejemplos de AJAX

JSJSON

Introducción JSON Sintaxis JSON JSON frente a XML Tipos de datos JSON Análisis JSON Cadena JSON Objetos JSON Matrices JSON Servidor JSON JSONPHP JSONHTML JSON JSONP

JS frente a jQuery

Selectores jQuery HTML de jQuery CSS de jQuery DOM de jQuery

Gráficos JS

Gráficos JS Lienzo JS JS Trazado Gráfico JS.js Gráfico de Google JS JS D3.js

Ejemplos de JS

Ejemplos de JS JS HTML DOM Entrada HTML JS Objetos JS HTML Eventos JS HTML Navegador JS Editor JS Ejercicios JS Prueba JS Certificado JS

Referencias JS

Objetos JavaScript Objetos HTML DOM


AJAX - XMLHttpRequest


El objeto XMLHttpRequest se utiliza para solicitar datos de un servidor.


Enviar una solicitud a un servidor

Para enviar una solicitud a un servidor, usamos los métodos open() y send() del XMLHttpRequestobjeto:

xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
Method Description
open(method, url, async) Specifies the type of request

method: the type of request: GET or POST
url: the server (file) location
async: true (asynchronous) or false (synchronous)
send() Sends the request to the server (used for GET)
send(string) Sends the request to the server (used for POST)

La url - Un archivo en un servidor

El parámetro url del open()método es una dirección a un archivo en un servidor:

xhttp.open("GET", "ajax_test.asp", true);

El archivo puede ser cualquier tipo de archivo, como .txt y .xml, o archivos de secuencias de comandos del servidor como .asp y .php (que pueden realizar acciones en el servidor antes de devolver la respuesta).


Asíncrono: ¿verdadero o falso?

Las solicitudes del servidor deben enviarse de forma asíncrona.

El parámetro asíncrono del método open() debe establecerse en verdadero:

xhttp.open("GET", "ajax_test.asp", true);

Al enviar de forma asíncrona, JavaScript no tiene que esperar la respuesta del servidor, sino que puede:

  • ejecutar otros scripts mientras espera la respuesta del servidor
  • tratar la respuesta después de que la respuesta esté lista

El valor predeterminado para el parámetro async es async = true.

Puede eliminar con seguridad el tercer parámetro de su código.

No se recomienda XMLHttpRequest síncrono (async = false) porque JavaScript dejará de ejecutarse hasta que la respuesta del servidor esté lista. Si el servidor está ocupado o lento, la aplicación se colgará o se detendrá.


OBTENER o PUBLICAR?

GETes más simple y rápido que POST, y se puede usar en la mayoría de los casos.

Sin embargo, siempre use solicitudes POST cuando:

  • Un archivo en caché no es una opción (actualizar un archivo o base de datos en el servidor).
  • Enviar una gran cantidad de datos al servidor (POST no tiene limitaciones de tamaño).
  • Al enviar la entrada del usuario (que puede contener caracteres desconocidos), POST es más sólido y seguro que GET.

OBTENER solicitudes

Una simple GETsolicitud:

Ejemplo

xhttp.open("GET", "demo_get.asp");
xhttp.send();

En el ejemplo anterior, puede obtener un resultado almacenado en caché. Para evitar esto, agregue una ID única a la URL:

Ejemplo

xhttp.open("GET", "demo_get.asp?t=" + Math.random());
xhttp.send();

Si desea enviar información con el GETmétodo, agregue la información a la URL:

Ejemplo

xhttp.open("GET", "demo_get2.asp?fname=Henry&lname=Ford");
xhttp.send();

Cómo el servidor usa la entrada y cómo responde el servidor a una solicitud, se explica en un capítulo posterior.



Solicitudes POST

Una simple POSTsolicitud:

Ejemplo

xhttp.open("POST", "demo_post.asp");
xhttp.send();

Para publicar datos como un formulario HTML, agregue un encabezado HTTP con setRequestHeader(). Especifique los datos que desea enviar en el send()método:

Ejemplo

xhttp.open("POST", "ajax_test.asp");
xhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xhttp.send("fname=Henry&lname=Ford");
Method Description
setRequestHeader(header, value) Adds HTTP headers to the request

header: specifies the header name
value: specifies the header value

Solicitud síncrona

Para ejecutar una solicitud síncrona, cambie el tercer parámetro en el open()método a false:

xhttp.open("GET", "ajax_info.txt", false);

A veces, async = false se usa para pruebas rápidas. También encontrará solicitudes síncronas en código JavaScript más antiguo.

Dado que el código esperará a que se complete el servidor, no hay necesidad de una onreadystatechange función:

Ejemplo

xhttp.open("GET", "ajax_info.txt", false);
xhttp.send();
document.getElementById("demo").innerHTML = xhttp.responseText;

No se recomienda XMLHttpRequest síncrono (async = false) porque JavaScript dejará de ejecutarse hasta que la respuesta del servidor esté lista. Si el servidor está ocupado o lento, la aplicación se colgará o se detendrá.

Se alienta a las herramientas de desarrollo modernas a advertir sobre el uso de solicitudes síncronas y es posible que generen una excepción InvalidAccessError cuando ocurra.