<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Peticiones_HTTP</id>
	<title>Peticiones HTTP - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://manuais.iessanclemente.net/index.php?action=history&amp;feed=atom&amp;title=Peticiones_HTTP"/>
	<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Peticiones_HTTP&amp;action=history"/>
	<updated>2026-10-24T02:03:15Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.46.2</generator>
	<entry>
		<id>https://manuais.iessanclemente.net/index.php?title=Peticiones_HTTP&amp;diff=69722&amp;oldid=prev</id>
		<title>Vieites: /* Librería Axios */</title>
		<link rel="alternate" type="text/html" href="https://manuais.iessanclemente.net/index.php?title=Peticiones_HTTP&amp;diff=69722&amp;oldid=prev"/>
		<updated>2021-06-17T22:17:21Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Librería Axios&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;AJAX : Asynchronous JavaScript And XML, es una técnica de desarrollo web para crear aplicaciones interactivas.&lt;br /&gt;
* [https://es.wikipedia.org/wiki/Protocolo_de_transferencia_de_hipertexto#:~:text=El%20Protocolo%20de%20transferencia%20de,en%20la%20World%20Wide%20Web. Protocolos de Transferencia de Hipertexto]&lt;br /&gt;
* [https://developer.mozilla.org/es/docs/Web/API/XMLHttpRequest Objeto XMLHttpRequest]&lt;br /&gt;
: Comprobar qué navegadores soportan el objeto XMLHttpRequest:&lt;br /&gt;
:* [https://caniuse.com/?search=xmlhttprequest https://caniuse.com]&lt;br /&gt;
* [https://developer.mozilla.org/es/docs/Web/HTTP/Status Estados HTTP]&lt;br /&gt;
&lt;br /&gt;
== Objeto XMLHttpRequest ==&lt;br /&gt;
XMLHttpRequest es un objeto JavaScript que fue diseñado por Microsoft y adoptado por Mozilla, Apple y Google. Actualmente es un estándar de la W3C. Proporciona una forma fácil de obtener información de una URL sin tener que recargar la página completa. Una página web puede actualizar sólo una parte de la página sin interrumpir lo que el usuario está haciendo. XMLHttpRequest es ampliamente usado en la programación AJAX.&lt;br /&gt;
&lt;br /&gt;
A pesar de su nombre, XMLHttpRequest puede ser usado para recibir cualquier tipo de dato, no solo XML, y admite otros formatos además de HTTP (incluyendo file y ftp).&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo 1.- Leer un archivo .txt por GET ===&lt;br /&gt;
En este ejemplo vamos a cargar el contenido de un archivo .txt de modo dinámico y, su contenido, lo cargaremos a la web.&lt;br /&gt;
&lt;br /&gt;
El contenido del archivo &amp;#039;info.txt&amp;#039; que vamos a cargar será una lista:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;TXT&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;txt&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Frutas:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Manzana&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Naranja&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Melón&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Legumbres&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Cereales&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;HTML:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
  &amp;lt;html lang=&amp;quot;es&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;head&amp;gt;&lt;br /&gt;
      &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
      &amp;lt;title&amp;gt;Primer ejemplo AJAX&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;/head&amp;gt;&lt;br /&gt;
    &amp;lt;body&amp;gt;&lt;br /&gt;
      &amp;lt;form name=&amp;quot;formulario&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;p&amp;gt;&lt;br /&gt;
          &amp;lt;input type=&amp;quot;button&amp;quot; value=&amp;quot;Leer archivo&amp;quot; id=&amp;quot;lee&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;/p&amp;gt;&lt;br /&gt;
      &amp;lt;/form&amp;gt;&lt;br /&gt;
      &amp;lt;div id=&amp;quot;etiqueta&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;script src=&amp;quot;script.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
    &amp;lt;/body&amp;gt;&lt;br /&gt;
  &amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;JavaScript:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function obtenerInfo() {&lt;br /&gt;
  let xhttp = new XMLHttpRequest();&lt;br /&gt;
  xhttp.onreadystatechange = function() {&lt;br /&gt;
&lt;br /&gt;
//Indicamos qué queremos que realice la web antes de enviar la petición al servidor&lt;br /&gt;
    if (this.readyState == 4 &amp;amp;&amp;amp; this.status == 200) {   //Visitar developer.Mozilla para comprobar propiedades &amp;#039;readyState&amp;#039; y &amp;#039;status&amp;#039;&lt;br /&gt;
      document.getElementById(&amp;quot;etiqueta&amp;quot;).innerHTML = this.responseText;&lt;br /&gt;
    }&lt;br /&gt;
  };&lt;br /&gt;
  xhttp.open(&amp;quot;GET&amp;quot;, &amp;quot;info.txt&amp;quot;, true);&lt;br /&gt;
  xhttp.send();&lt;br /&gt;
}&lt;br /&gt;
//Añadimos escuchadores&lt;br /&gt;
document.getElementById(&amp;#039;lee&amp;#039;).addEventListener(&amp;#039;click&amp;#039;, obtenerInfo, false);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo 2.- Leer un archivo .php por GET ===&lt;br /&gt;
Podemos leer dinámicamente, sin recargar la página, un archivo .php como el siguiente. Este archivo php también podría ser mucho más complejo, por ejemplo un archivo que accediese a una base de datos e interactuase con ella para leer, escribir, borrar registros... etc. &lt;br /&gt;
&lt;br /&gt;
Lo primero será crear el archivo &amp;#039;&amp;#039;&amp;#039;respuestaSimple.php&amp;#039;&amp;#039;&amp;#039; con el siguiente contenido.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;PHP&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
  header(&amp;quot;Content-Type: text/html; charset=utf-8&amp;quot;);&lt;br /&gt;
  echo (&lt;br /&gt;
   &amp;quot;&amp;lt;ol&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Frutas:&lt;br /&gt;
   &amp;lt;ul&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Manzana&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Naranja&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Melón&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ul&amp;gt;&lt;br /&gt;
   &amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Legumbres&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;li&amp;gt;Cereales&amp;lt;/li&amp;gt;&lt;br /&gt;
   &amp;lt;/ol&amp;gt;&amp;quot;&lt;br /&gt;
  );&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y modificamos el contenido del archivo &amp;#039;&amp;#039;&amp;#039;scripts.js&amp;#039;&amp;#039;&amp;#039; del siguiente modo. Aprovechando para configurarlo de modo que evite la caché del navegador.&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;JavaScript&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function obtenerInfo() {&lt;br /&gt;
  let xhr = new XMLHttpRequest();&lt;br /&gt;
  xhr.onreadystatechange = function() {&lt;br /&gt;
    if (this.readyState == 4 &amp;amp;&amp;amp; this.status == 200) {&lt;br /&gt;
      document.getElementById(&amp;quot;etiqueta&amp;quot;).innerHTML = this.responseText;&lt;br /&gt;
    }&lt;br /&gt;
  };&lt;br /&gt;
  let url = &amp;quot;info.txt?r=&amp;quot; + (new Date()).getTime();&lt;br /&gt;
  xhr.open(&amp;quot;GET&amp;quot;, url, true);&lt;br /&gt;
  xhr.send();&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//Añadimos escuchadores&lt;br /&gt;
document.getElementById(&amp;#039;lee&amp;#039;).addEventListener(&amp;#039;click&amp;#039;, obtenerInfo, false);&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo 3: Acceso a un JSON por GET ===&lt;br /&gt;
Utilizar la tecnología AJAX con el objeto &amp;#039;&amp;#039;&amp;#039;XMLHttpRequest&amp;#039;&amp;#039;&amp;#039; sólo es posible haciendo peticiones al propio servidor. A no ser, que el servidor web esté configurado para habilitar el uso compartido de recursos (CORS).&lt;br /&gt;
* [https://riptutorial.com/es/apache/example/19826/habilitar-cors Habilitar CORS en Apache2]&lt;br /&gt;
* [https://enable-cors.org/server_nginx.html Habilitar CORS EN Nginx]&lt;br /&gt;
&lt;br /&gt;
En este tercer ejemplo, accedemos a un JSON de la web externa [https://jsonplaceholder.typicode.com/ JSON Placeholder], que nos permite realizar peticiones AJAX pues tiene habilitado el uso compartido de recursos (CORS).&lt;br /&gt;
&lt;br /&gt;
Aprovecharemos para realizar de un modo más preciso las peticiones AJAX con el objeto &amp;#039;&amp;#039;&amp;#039;XMLHttpRequest&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;HTML&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;AJAX&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1 id=&amp;#039;titulo&amp;#039;&amp;gt;AJAX&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;button id=&amp;#039;boton&amp;#039;&amp;gt;Pide datos&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script src=&amp;quot;scripts.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;JavaScript&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
function leerDatos() {&lt;br /&gt;
    //Crear el xhr haciendo que funcione en navegadores viejos&lt;br /&gt;
    let xhr;&lt;br /&gt;
    if (window.XMLHttpRequest) xhr = new XMLHttpRequest();&lt;br /&gt;
    else xhr = new ActiveXObject(&amp;quot;Microsoft.XMLHTTP&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
    //Antes de enviar la petición le decimos lo que queremos que haga con los datos&lt;br /&gt;
    ///El siguiente código, como mucho va delante del envío de la petición .send()&lt;br /&gt;
    ///Evento &amp;#039;load&amp;#039; = La petición ya terminó&lt;br /&gt;
    xhr.addEventListener(&amp;#039;load&amp;#039;, function(datos) {&lt;br /&gt;
        //La parte que nos va a interesar es &amp;#039;target&amp;#039;&lt;br /&gt;
        ///Y, dentro de &amp;#039;target&amp;#039; lo que nos interesa es &amp;#039;response&amp;#039; (todos los datos)&lt;br /&gt;
    //console.log(datos.target.response);&lt;br /&gt;
        ///Vemos el &amp;#039;typeof&amp;#039; de esos datos y nos devuelve &amp;#039;string&amp;#039; NO un objeto&lt;br /&gt;
    //console.log(typeof datos.target.response);&lt;br /&gt;
        ///Convertimos ese &amp;#039;string&amp;#039; en un &amp;#039;objeto&amp;#039;&lt;br /&gt;
        const datosJSON = JSON.parse(datos.target.response)&lt;br /&gt;
        console.log(dataJSON);&lt;br /&gt;
&lt;br /&gt;
    })&lt;br /&gt;
&lt;br /&gt;
    // Seleccionamos método &amp;#039;GET&amp;#039;&lt;br /&gt;
    const url = &amp;#039;https://jsonplaceholder.typicode.com/users&amp;#039;;&lt;br /&gt;
    xhr.open(&amp;#039;GET&amp;#039;, url)&lt;br /&gt;
&lt;br /&gt;
    //Enviamos la petición&lt;br /&gt;
    xhr.send();&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Ahora, modificamos los códigos para mostrar por pantalla el &amp;#039;id&amp;#039; y el &amp;#039;name&amp;#039; de cada uno de los usuarios descargados. Para ello crearemos una lista desordenada:&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;HTML&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
// ...&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;ul id=&amp;quot;lista&amp;quot;&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
// ...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;JavaScript&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//...&lt;br /&gt;
        const lista = document.getElementById(&amp;#039;lista&amp;#039;);&lt;br /&gt;
        for (const userInfo of datosJSON) {&lt;br /&gt;
            const listaI = document.createElement(&amp;#039;li&amp;#039;);&lt;br /&gt;
            listaI.textContent = `${userInfo.id} -&amp;gt; ${userInfo.name}`;&lt;br /&gt;
            lista.appendChild(listaI);&lt;br /&gt;
//...&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplo 4: Formulario con GET y POST ===&lt;br /&gt;
En el siguiente ejemplo realizamos el autocompletado de un formulario empleando GET y el envío por POST&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;HTML&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
	&amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;title&amp;gt;Ejemplo AJAX GET + POST&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
&amp;lt;h1&amp;gt;Pide Pizza&amp;lt;/h1&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- El formulario envía los datos por método POST &lt;br /&gt;
     &amp;#039;name&amp;#039; : &amp;#039;value&amp;#039;          --&amp;gt;&lt;br /&gt;
&amp;lt;form name=&amp;quot;formulario&amp;quot; method=&amp;quot;post&amp;quot; action=&amp;quot;ejemploPost.php&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;p&amp;gt;Introduzca su n&amp;amp;uacute;mero:&lt;br /&gt;
		&amp;lt;input type=&amp;quot;text&amp;quot; size=&amp;quot;14&amp;quot; name=&amp;quot;telefono&amp;quot; id=&amp;quot;telefono&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/p&amp;gt;&lt;br /&gt;
	&amp;lt;p&amp;gt;Su pizza ser&amp;amp;aacute; entregada en la direcci&amp;amp;oacute;n:&amp;lt;/p&amp;gt;&lt;br /&gt;
	&amp;lt;div id=&amp;quot;direccion&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;lt;p&amp;gt;Escriba su solicitud aqu&amp;amp;iacute;:&amp;lt;/p&amp;gt;&lt;br /&gt;
	&amp;lt;p&amp;gt;&lt;br /&gt;
		&amp;lt;textarea name=&amp;quot;solicitud&amp;quot; rows=&amp;quot;6&amp;quot; cols=&amp;quot;50&amp;quot; id=&amp;quot;solicitud&amp;quot;&amp;gt;&amp;lt;/textarea&amp;gt;&lt;br /&gt;
	&amp;lt;/p&amp;gt;&lt;br /&gt;
	&amp;lt;p&amp;gt;&lt;br /&gt;
		&amp;lt;input type=&amp;quot;submit&amp;quot; value=&amp;quot;Pedir una Pizza&amp;quot; id=&amp;quot;submit&amp;quot; /&amp;gt;&lt;br /&gt;
	&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;script src=&amp;quot;scripts.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;PHP&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//buscarCliente.php&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
if ($_GET[&amp;#039;phone&amp;#039;]==&amp;quot;123&amp;quot;) {&lt;br /&gt;
	echo (&amp;quot;Pizza Tropical|Rúa Fray Rosendo Salvado Nº 25, 3º C\n15705 Santiago de Compostela\nA Coruña&amp;quot;);&lt;br /&gt;
} elseif ($_GET[&amp;#039;phone&amp;#039;]==&amp;quot;1234&amp;quot;) {&lt;br /&gt;
	echo (&amp;quot;Pizza Margarita|Rúa do Sar Nº 40, 1º C\n15702 Santiago de Compostela\nA Coruña&amp;quot;);&lt;br /&gt;
} else {&lt;br /&gt;
	echo &amp;quot;No esta en la base de datos.|No existe.&amp;quot;;&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
//ejemploPost.php&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
&lt;br /&gt;
	$telefono = $_POST[&amp;#039;telefono&amp;#039;];&lt;br /&gt;
	$solicitud = $_POST[&amp;#039;solicitud&amp;#039;];&lt;br /&gt;
&lt;br /&gt;
	echo &amp;quot;&amp;lt;p&amp;gt;Tu teléfono es: &amp;quot;.$telefono.&amp;quot;&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
	echo &amp;quot;&amp;lt;p&amp;gt;Tu solicitud es: &amp;quot;.$solicitud.&amp;quot;&amp;lt;/p&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;JavaScript&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
//Utilizamos el objeto AJAX creado para pedir información asíncrona al servidor&lt;br /&gt;
function obtenerInfoCliente() {&lt;br /&gt;
&lt;br /&gt;
    //Creamos el objeto XMLHttpRequest()&lt;br /&gt;
    let xhr;&lt;br /&gt;
    if (window.XMLHttpRequest) xhr = new XMLHttpRequest();&lt;br /&gt;
    else xhr = new ActiveXObject(&amp;quot;Microsoft.XMLHTTP&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    let phone = document.getElementById(&amp;quot;telefono&amp;quot;).value;&lt;br /&gt;
    let url = &amp;quot;buscarCliente.php?phone=&amp;quot; + encodeURIComponent(phone) + &amp;quot;&amp;amp;r=&amp;quot; + (new Date()).getTime();&lt;br /&gt;
     console.log(url);&lt;br /&gt;
    &lt;br /&gt;
    //Evento &amp;#039;load&amp;#039; = La petición ya terminó&lt;br /&gt;
    xhr.addEventListener(&amp;#039;load&amp;#039;, function(datos) {&lt;br /&gt;
        //Lo que nos interesa es : datos.target.response&lt;br /&gt;
        const respuesta = datos.target.response;&lt;br /&gt;
        // console.log(respuesta);&lt;br /&gt;
&lt;br /&gt;
        const aRespuesta = respuesta.split(&amp;quot;|&amp;quot;); // Hacemos un array&lt;br /&gt;
        console.log(aRespuesta);&lt;br /&gt;
        &lt;br /&gt;
        // Seleccionamos el textarea con id &amp;#039;solicitud&amp;#039; y lo rellenamos con tu último pedido&lt;br /&gt;
        document.getElementById(&amp;quot;solicitud&amp;quot;).value = aRespuesta[0];&lt;br /&gt;
&lt;br /&gt;
        // Seleccionamos el div con id &amp;#039;direccion&amp;#039; y mostramos la dirección si ya la tenemos &lt;br /&gt;
        if (aRespuesta[1] != undefined)&lt;br /&gt;
            document.getElementById(&amp;quot;direccion&amp;quot;).innerHTML = aRespuesta[1].replace(/\n/g, &amp;quot;&amp;lt;br&amp;gt;&amp;quot;);&lt;br /&gt;
    });&lt;br /&gt;
&lt;br /&gt;
    xhr.open(&amp;quot;GET&amp;quot;, url, true); &lt;br /&gt;
      //Método GET &lt;br /&gt;
      //URL con el parámetro que nos interese &lt;br /&gt;
      //true = Asíncrono&lt;br /&gt;
&lt;br /&gt;
     xhr.send();&lt;br /&gt;
      //Se envía la petición, vacía por ser get&lt;br /&gt;
}&lt;br /&gt;
//----------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
//Añadimos escuchador en la caja de texto con id &amp;#039;telefono&amp;#039;&lt;br /&gt;
///&amp;#039;change&amp;#039; es cuando pierde el foco&lt;br /&gt;
document.getElementById(&amp;#039;telefono&amp;#039;).addEventListener(&amp;#039;change&amp;#039;, obtenerInfoCliente, false);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Ejemplos más elaborados ===&lt;br /&gt;
* [[Práctica 1 XMLHttpRequest – GET + PHP – MySQL]]&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
== Objeto Fetch ==&lt;br /&gt;
La [https://developer.mozilla.org/es/docs/Web/API/Fetch_API API Fetch] proporciona una interfaz JavaScript para acceder y manipular partes del canal HTTP, tales como peticiones y respuestas. También provee un método global &amp;#039;&amp;#039;&amp;#039;fetch()&amp;#039;&amp;#039;&amp;#039; que proporciona una forma fácil y lógica de obtener recursos de forma asíncrona por la red.&lt;br /&gt;
&lt;br /&gt;
Este tipo de funcionalidad se conseguía previamente haciendo uso de &amp;#039;&amp;#039;&amp;#039;XMLHttpRequest&amp;#039;&amp;#039;&amp;#039;. Fetch proporciona una alternativa mejor. Fetch también aporta un único lugar lógico en el que definir otros conceptos relacionados con HTTP como CORS y extensiones para HTTP.&lt;br /&gt;
&lt;br /&gt;
El &amp;#039;&amp;#039;&amp;#039;fetch()&amp;#039;&amp;#039;&amp;#039; devolverá una [https://developer.mozilla.org/es/docs/Web/JavaScript/Referencia/Objetos_globales/Promise Promesa] que será aceptada cuando reciba una respuesta y sólo será rechazada si hay un fallo de red o si por alguna razón no se pudo completar la petición. El modo más habitual de manejar las promesas es utilizando &amp;#039;&amp;#039;&amp;#039;.then()&amp;#039;&amp;#039;&amp;#039; tal y como veremos en los ejemplos siguientes.&lt;br /&gt;
&lt;br /&gt;
Al método &amp;#039;&amp;#039;&amp;#039;.then()&amp;#039;&amp;#039;&amp;#039; se le pasa una función &amp;#039;&amp;#039;&amp;#039;callback&amp;#039;&amp;#039;&amp;#039; donde su parámetro &amp;#039;&amp;#039;&amp;#039;res&amp;#039;&amp;#039;&amp;#039; (respuesta) es el objeto de respuesta de la petición que hemos realizado. En su interior realizaremos la lógica que queramos hacer con la respuesta a nuestra petición. A la función &amp;#039;&amp;#039;&amp;#039;fetch(url, options)&amp;#039;&amp;#039;&amp;#039; se le pasa por parámetro la url de la petición y, de forma opcional, un objeto &amp;#039;&amp;#039;&amp;#039;options&amp;#039;&amp;#039;&amp;#039; con opciones de la petición HTTP:&lt;br /&gt;
* method: GET,HEAD,POST,PUT&lt;br /&gt;
* body&lt;br /&gt;
* headers&lt;br /&gt;
* credentials&lt;br /&gt;
&lt;br /&gt;
Más detalles en esta [https://lenguajejs.com/javascript/peticiones-http/fetch/ web].&lt;br /&gt;
&lt;br /&gt;
Veamos unos ejemplos.&lt;br /&gt;
&lt;br /&gt;
=== GET con Fetch ===&lt;br /&gt;
Realizaremos ahora el ejemplo 3 del apartado &amp;#039;&amp;#039;&amp;#039;XMLHttpRequest()&amp;#039;&amp;#039;&amp;#039; pero utilizando &amp;#039;&amp;#039;&amp;#039;fetch()&amp;#039;&amp;#039;&amp;#039;.&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;HTML&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;AJAX&amp;lt;/title&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;h1 id=&amp;#039;titulo&amp;#039;&amp;gt;AJAX&amp;lt;/h1&amp;gt;&lt;br /&gt;
    &amp;lt;button id=&amp;#039;boton&amp;#039;&amp;gt;Pide datos&amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;br&amp;gt;&lt;br /&gt;
    &amp;lt;ul id=&amp;quot;lista&amp;quot;&amp;gt;&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;script src=&amp;quot;scripts.js&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;JavaScript&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;source lang=&amp;quot;javascript&amp;quot;&amp;gt;&lt;br /&gt;
const boton = document.getElementById(&amp;#039;boton&amp;#039;);&lt;br /&gt;
boton.addEventListener(&amp;#039;click&amp;#039;, () =&amp;gt; {&lt;br /&gt;
&lt;br /&gt;
    const url = &amp;#039;https://jsonplaceholder.typicode.com/users&amp;#039;;&lt;br /&gt;
    fetch(url)&lt;br /&gt;
        //Elementos recibidos son un json, &lt;br /&gt;
        ///con método .json() los convertimos a un objeto javascript json&lt;br /&gt;
        .then(res =&amp;gt; res.json())&lt;br /&gt;
        //&amp;#039;res&amp;#039; ahora ya es un json y lo podemos recorrer con &amp;#039;for of&amp;#039;&lt;br /&gt;
        .then(res =&amp;gt; {&lt;br /&gt;
            const lista = document.getElementById(&amp;#039;lista&amp;#039;);&lt;br /&gt;
            //Borramos lista existente&lt;br /&gt;
            lista.innerHTML = &amp;quot;&amp;quot;;&lt;br /&gt;
            //Creamos un fragmento de código con todos los elementos de la lista&lt;br /&gt;
            const fragmento = document.createDocumentFragment();&lt;br /&gt;
            for (const userInfo of res) {&lt;br /&gt;
                const li = document.createElement(&amp;#039;li&amp;#039;);&lt;br /&gt;
                li.textContent = `${userInfo.id} - ${userInfo.name}`;&lt;br /&gt;
                fragmento.appendChild(li);&lt;br /&gt;
            }&lt;br /&gt;
            //Añadimos el fragmento con los li al ul&lt;br /&gt;
            lista.appendChild(fragmento);&lt;br /&gt;
        })&lt;br /&gt;
        .catch(err =&amp;gt; {&lt;br /&gt;
            console.log(&amp;#039;Error encontrado: &amp;#039; + err.message);&lt;br /&gt;
        });&lt;br /&gt;
});&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Librería Axios ==&lt;br /&gt;
Se trata de una librería Javascript capaz de ejecutarse tanto en el navegador como en NodeJS, que facilita todo tipo de operaciones como cliente HTTP.&lt;br /&gt;
&lt;br /&gt;
Con Axios puedes realizar solicitudes contra un servidor, completamente configurables, y recibir la respuesta de una manera sencilla de procesar. En este artículo te explicaremos las ventajas de esta librería, así como algunos ejemplos básicos de uso, con los que podrás observar su funcionamiento.&lt;br /&gt;
&lt;br /&gt;
La librería está basada en promesas, por lo que al usarla podremos generar un código asíncrono bastante ordenado. Incluso es capaz de usar &amp;#039;&amp;#039;&amp;#039;Async / Await&amp;#039;&amp;#039;&amp;#039; para mejorar la sintaxis.&lt;br /&gt;
&lt;br /&gt;
[[JavaScript | Volver]]&lt;/div&gt;</summary>
		<author><name>Vieites</name></author>
	</entry>
</feed>