1+ <!doctype html>
2+ < html lang ="es ">
3+ < head >
4+ < link rel ="stylesheet " type ="text/css " href ="base.css " />
5+ < link rel ="stylesheet " type ="text/css " href ="exe_highlighter.css " />
6+ < link rel ="stylesheet " type ="text/css " href ="content.css " />
7+ < link rel ="stylesheet " type ="text/css " href ="nav.css " />
8+ < meta http-equiv ="content-type " content ="text/html; charset=utf-8 " />
9+ < title > 8.4.1. Ejemplo | UA08 - Bases de datos en XML </ title >
10+ < link rel ="shortcut icon " href ="favicon.ico " type ="image/x-icon " />
11+ < meta name ="author " content ="David Bermúdez " />
12+ < link rel ="license " type ="text/html " href ="http://creativecommons.org/licenses/by-nc-sa/4.0/ " />
13+ < meta name ="generator " content ="eXeLearning 2.8.1 - exelearning.net " />
14+ <!--[if lt IE 9]><script type="text/javascript" src="exe_html5.js"></script><![endif]-->
15+ < script type ="text/javascript " src ="exe_jquery.js "> </ script >
16+ < script type ="text/javascript " src ="exe_highlighter.js "> </ script >
17+ < script type ="text/javascript " src ="common_i18n.js "> </ script >
18+ < script type ="text/javascript " src ="common.js "> </ script >
19+ < link rel ="stylesheet " type ="text/css " href ="udl-content.css " />
20+ < script type ="text/javascript " src ="udl-content.js "> </ script >
21+ < meta name ="viewport " content ="width=device-width, initial-scale=1 " />
22+ </ head >
23+ < body class ="exe-web-site " id ="exe-node-18 "> < script type ="text/javascript "> document . body . className += " js" </ script >
24+ < div id ="content ">
25+ < p id ="skipNav "> < a href ="#main " class ="sr-av "> Saltar la navegación</ a > </ p >
26+ < header id ="header " > < div id ="headerContent "> UA08 - Bases de datos en XML</ div > </ header >
27+ < nav id ="siteNav ">
28+ < ul >
29+ < li > < a href ="index.html " class ="daddy main-node "> UA08. JSON</ a > </ li >
30+ < li > < a href ="81_sintaxis.html " class ="no-ch "> 8.1. Sintaxis</ a > </ li >
31+ < li > < a href ="82_acceso_a_los_valores.html " class ="no-ch "> 8.2. Acceso a los valores</ a > </ li >
32+ < li > < a href ="83_conversin.html " class ="no-ch "> 8.3. Conversión</ a > </ li >
33+ < li class ="current-page-parent "> < a href ="84_ajax.html " class ="current-page-parent daddy "> 8.4. AJAX</ a >
34+ < ul >
35+ < li id ="active "> < a href ="841_ejemplo.html " class ="active no-ch "> 8.4.1. Ejemplo</ a > </ li >
36+ < li > < a href ="842_ejercicios.html " class ="no-ch "> 8.4.2. Ejercicios</ a > </ li >
37+ < li > < a href ="843_scroll_infinito.html " class ="no-ch "> 8.4.3. Scroll Infinito</ a > </ li >
38+ </ ul >
39+ </ li >
40+ </ ul >
41+ </ nav >
42+ < div id ='topPagination '>
43+ < nav class ="pagination noprt ">
44+ < a href ="84_ajax.html " class ="prev "> < span > < span > « </ span > Anterior</ span > </ a > < span class ="sep "> | </ span > < a href ="842_ejercicios.html " class ="next "> < span > Siguiente< span > »</ span > </ span > </ a >
45+ </ nav >
46+ </ div >
47+ < div id ="main-wrapper ">
48+ < section id ="main ">
49+ < header id ="nodeDecoration "> < h1 id ="nodeTitle "> 8.4.1. Ejemplo</ h1 > </ header >
50+ < article class ="iDevice_wrapper UDLcontentIdevice em_iDevice " id ="id35 ">
51+ < div class ="iDevice emphasis1 " >
52+ < header class ="iDevice_header iDevice_header_noIcon "> < h1 class ="iDeviceTitle "> Ejemplo funcional</ h1 > </ header >
53+ < div class ="iDevice_inner ">
54+ < div class ="iDevice_content_wrapper ">
55+ < div id ="ta35_124_2 " class ="block iDevice_content ">
56+ < div class ="exe-udlContent exe-udlContent-engagement "> < section class ="exe-udlContent-block "> < div class ="exe-udlContent-content "> < div class ="exe-udlContent-content-main "> < p > La Web < a href ="https://jsonplaceholder.typicode.com/ "> JSONPlaceholder - Free Fake REST API (typicode.com)</ a > es una API (< strong > Application Programming Interface</ strong > ) para realizar pruebas.</ p >
57+ < p > El siguiente código HTML mostrará una página con un título y un botón. Al pulsar el botón, se mostrará una información obtenida de la web dentro de un div.</ p >
58+ < div class ="highlighted-code code-style-2 language-markup ">
59+ < div >
60+ < pre > < code > <!DOCTYPE html>
61+ <html lang="es">
62+ <head>
63+ <meta charset="UTF-8">
64+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
65+ <title>Ejemplo de AJAX</title>
66+ </head>
67+ <body>
68+ <h1>Consulta de Usuarios</h1>
69+ <button onclick="obtenerUsuarios()">Obtener Usuarios</button>
70+ <div id="resultado"></div>
71+
72+ <script src="script.js"></script>
73+ </body>
74+ </html></ code > </ pre >
75+ </ div >
76+ </ div >
77+ < p > Código JavaScript necesario para la conexión a la API:</ p >
78+ < div class ="highlighted-code code-style-2 language-js ">
79+ < div >
80+ < pre > < code > function obtenerUsuarios() {
81+ var xhr = new XMLHttpRequest();
82+
83+ // Configurar la solicitud
84+ xhr.open("GET", "https://jsonplaceholder.typicode.com/users", true);
85+
86+ // Manejar la respuesta
87+ xhr.onload = function() {
88+ if (xhr.status == 200) {
89+ // Convertir la respuesta JSON a un objeto JavaScript
90+ var usuarios = JSON.parse(xhr.responseText);
91+
92+ // Manejar los datos obtenidos
93+ mostrarUsuarios(usuarios);
94+ } else {
95+ console.error("Error al realizar la solicitud. Código de estado: " + xhr.status);
96+ }
97+ };
98+
99+ // Manejar errores de red
100+ xhr.onerror = function() {
101+ console.error("Error de red al realizar la solicitud");
102+ };
103+
104+ // Enviar la solicitud
105+ xhr.send();
106+ }
107+
108+ function mostrarUsuarios(usuarios) {
109+ var resultado = document.getElementById("resultado");
110+ resultado.innerHTML = "<h2>Usuarios</h2>";
111+
112+ // Crear una lista de usuarios
113+ var listaUsuarios = "<ul>";
114+ usuarios.forEach(function(usuario) {
115+ listaUsuarios += "<li><strong>ID:</strong> " + usuario.id + ", <strong>Nombre:</strong> " + usuario.name + ", <strong>Email:</strong> " + usuario.email + "</li>";
116+ });
117+ listaUsuarios += "</ul>";
118+
119+ resultado.innerHTML += listaUsuarios;
120+ }</ code > < code >
121+ </ code > </ pre >
122+ </ div >
123+ </ div >
124+ < p > Este último código se guardará en < strong > script.js</ strong > para que el botón tenga funcionalidad. Observa que no ha sido necesario un formulario ni una recarga web para adquirir la información.</ p > </ div > </ div > </ section > </ div >
125+ </ div >
126+ </ div >
127+ </ div >
128+ </ div >
129+ </ article >
130+ < div id ="packageLicense " class ="cc cc-by-nc-sa ">
131+ < p > < span > Obra publicada con</ span > < a rel ="license " href ="http://creativecommons.org/licenses/by-nc-sa/4.0/ "> Licencia Creative Commons Reconocimiento No comercial Compartir igual 4.0</ a > </ p >
132+ </ div >
133+ </ section >
134+ </ div >
135+ < div id ='bottomPagination '>
136+ < nav class ="pagination noprt ">
137+ < a href ="84_ajax.html " class ="prev "> < span > < span > « </ span > Anterior</ span > </ a > < span class ="sep "> | </ span > < a href ="842_ejercicios.html " class ="next "> < span > Siguiente< span > »</ span > </ span > </ a >
138+ </ nav >
139+ </ div >
140+ </ div >
141+ < p id ="made-with-eXe "> < a href ="https://exelearning.net/ " target ="_blank " rel ="noopener "> < span > Creado con eXeLearning< span > (Ventana nueva)</ span > </ span > </ a > </ p > < script type ="text/javascript " src ="_style_js.js "> </ script > </ body > </ html >
0 commit comments