• Ir al contenido
  • Ir a la navegación
  • Ir al buscador
 
Infoudo
ING English
Directorio WAP para móvil, Tablet, iPhone o Smartphone

Centro de Noticias de la Universidad de Oriente

Categorías

 

Inicio  |  Contacto  |  Posts  |  TIENDA PUBLISHOP  |  Sobre nosotros  |  Registro y Planes  |  Pagos  |  Donaciones

Ver Código QR de esta página

Campaña #AyudemosaYuli  |  Campaña #AyudemosaStephany.  |  ¿Interesado(a) en cursos y resolución de ejercicios de materias prácticas? Para más información, contáctenos por: Teléfono: +58 (412) - 8226575. WhatsApp y Telegram: +58 (426) - 6836955 o escriba al correo: [email protected]. Únete al grupo: SISTEMAS (UDOMO).

[»] **Musica para tu celular

WEB TRANSLATOR

LINK for English Language

Use this link for translate into English


+ Buscar en InfoUDO

 

Recuperar datos del servidor en formato JSON

Tweet
 

domingo julio 10, 2016

20 - Recuperar datos del servidor en formato JSON


Para ver como recuperamos datos del servidor en formato JSON en lugar de texto plano o XML implementaremos el siguiente ejemplo:
Confeccionar un sitio que permita ingresar el documento de una persona y nos retorne su apellido, nombre y lugar donde debe votar.

Para reducir el tamaño del problema y concentrarnos en la forma de transmisión de datos y su posterior recuperación en el navegador no implementaremos una base de datos en el servidor (en la realidad los datos de los votantes se encontrarían en una tabla)

El archivo pagina1.html:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Problema</title>
  <script src="funciones.js"></script>
</head>
<body>
  Ingrese dni (solo existen los valores 1,2 y 3):
  <input type="text" name="dni" id="dni" size="10"><br>
  <input type="button" value="Enviar" id="boton1">
  <div id="resultados"></div>
</body>
</html>

El archivo html no tiene nada especial. Definimos el div resultados para mostrar posteriormente los datos devueltos por el servidor.

El archivo funciones.js:

addEventListener('load',inicializarEventos,false);

function inicializarEventos()
{
  var ob=document.getElementById('boton1');
  ob.addEventListener('click',presionBoton,false);
}

function presionBoton(e)
{
  var ob=document.getElementById('dni');
  recuperarDatos(ob.value);
}


var conexion1;
function recuperarDatos(dni) 
{
  conexion1=new XMLHttpRequest();
  conexion1.onreadystatechange = procesarEventos;
  conexion1.open('GET','pagina1.php?dni='+dni, true);
  conexion1.send();
}

function procesarEventos()
{
  var resultados = document.getElementById("resultados");
  if(conexion1.readyState == 4)
  {
    var datos=JSON.parse(conexion1.responseText);
    var salida = "Apellido:"+datos.apellido+"<br>";
    salida=salida+"Nombre:"+datos.nombre+"<br>";
    salida=salida+"Dirección donde debe votar:"+datos.direccion;
    resultados.innerHTML = salida;
  } 
  else 
  {
    resultados.innerHTML = "Cargando...";
  }
}

Cuando se presiona el botón enviar se ejecuta la función:

function presionBoton(e)
{
  var ob=document.getElementById('dni');
  recuperarDatos(ob.value);
}

En esta función recuperamos el documento ingresado por el operador y llamamos a la función recuperarDatos pasando como parámetro el dni de la persona.

La función:

var conexion1;
function recuperarDatos(dni) 
{
  conexion1=new XMLHttpRequest();
  conexion1.onreadystatechange = procesarEventos;
  conexion1.open('GET','pagina1.php?dni='+dni, true);
  conexion1.send();
}

crea un objeto de la clase XMLHttpRequest y procede a realizar una comunicación asincrónica con el servidor pasando por parámetro GET el dni ingresado por el visitante al sitio.

Luego la función procesarEventos se ejecuta para cada uno de los estados de la petición:

function procesarEventos()
{
  var resultados = document.getElementById("resultados");
  if(conexion1.readyState == 4)
  {
    var datos=JSON.parse(conexion1.responseText);
    var salida = "Apellido:"+datos.apellido+"<br>";
    salida=salida+"Nombre:"+datos.nombre+"<br>";
    salida=salida+"Dirección donde debe votar:"+datos.direccion;
    resultados.innerHTML = salida;
  } 
  else 
  {
    resultados.innerHTML = "Cargando...";
  }
}

Cuando la propiedad readyState tiene almacenado un 4 procedemos a recuperar el string devuelto por la conexión como veremos un poco más abajo se trata de un string que almacena los datos en formato JSON.
Procedemos mediante la función parse del objeto JSON a generar un objeto en JavaScript y posteriormente mostramos los datos accediendo a los atributos de dicho objeto.

Como podemos observar es muy fácil acceder luego a la información devuelta por el servidor.

Por último el archivo pagina1.php:

<?php
header('Content-Type: text/txt; charset=utf-8');
$nombre='';
$apellido='';
$direccion='';
if ($_REQUEST['dni']=='1')
{
  $nombre='Juan';
  $apellido='Rodriguez';
  $direccion='Colon 123';
}
if ($_REQUEST['dni']=='2')
{
  $nombre='Ana';
  $apellido='Maldonado';
  $direccion='Lima 245';
}
if ($_REQUEST['dni']=='3')
{
  $nombre='laura';
  $apellido='Pueyrredon';
  $direccion='Laprida 785';
}

echo "{
        \"nombre\":\"$nombre\",
        \"apellido\":\"$apellido\",
        \"direccion\":\"$direccion\"
      }";
?>

Como dijimos para concentrarnos en JSON no extraemos la información de una base de datos. Por medio de tres if verificamos que número de documento se trata y procedemos a inicializar tres variables.

Lo más interesante es como procedemos a generar la salida con formato JSON:

echo "{
        \"nombre\":\"$nombre\",
        \"apellido\":\"$apellido\",
        \"direccion\":\"$direccion\"
      }";

Recordemos que todo objeto JSON debe ir entre llaves y cada atributo le debe seguir el caracter dos puntos y el valor de dicho atributo. También deben ir con comillas dobles los nombres de las propiedades y sus valores.



Problema resuelto.


Confeccionar un sitio que permita ingresar el documento de una persona y nos retorne su apellido, nombre y lugar donde debe votar.
pagina1.html



Ejecutar ejemplo



funciones.js




pagina1.php


Problema propuesto.

Modificar el problema resuelto de tal forma que se muestre un mensaje si no existe el dni ingresado.


Ver solución



pagina1.html

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Problema</title> <script src="funciones.js"></script> </head> <body> Ingrese dni (solo existen los valores 1,2 y 3): <input type="text" name="dni" id="dni" size="10"><br> <input type="button" value="Enviar" id="boton1"> <div id="resultados"></div> </body> </html>

funciones.js

addEventListener('load',inicializarEventos,false); function inicializarEventos() { var ob=document.getElementById('boton1'); ob.addEventListener('click',presionBoton,false); } function presionBoton(e) { var ob=document.getElementById('dni'); recuperarDatos(ob.value); } var conexion1; function recuperarDatos(dni) { conexion1=new XMLHttpRequest(); conexion1.onreadystatechange = procesarEventos; conexion1.open('GET','pagina1.php?dni='+dni, true); conexion1.send(); } function procesarEventos() { var resultados = document.getElementById("resultados"); if(conexion1.readyState == 4) { var datos=JSON.parse(conexion1.responseText); if (datos.apellido.length>0) { var salida = "Apellido:"+datos.apellido+"<br>"; salida=salida+"Nombre:"+datos.nombre+"<br>"; salida=salida+"Dirección donde debe votar:"+datos.direccion; resultados.innerHTML = salida; } else { resultados.innerHTML = 'Número de documento inexistente.'; } } else { resultados.innerHTML = "Cargando..."; } }

pagina1.php

<?php header('Content-Type: text/txt; charset=utf-8'); $nombre=''; $apellido=''; $direccion=''; if ($_REQUEST['dni']=='1') { $nombre='Juan'; $apellido='Rodriguez'; $direccion='Colon 123'; } if ($_REQUEST['dni']=='2') { $nombre='Ana'; $apellido='Maldonado'; $direccion='Lima 245'; } if ($_REQUEST['dni']=='3') { $nombre='laura'; $apellido='Pueyrredon'; $direccion='Laprida 785'; } echo "{ 'nombre':'$nombre', 'apellido':'$apellido', 'direccion':'$direccion' }"; ?>
  Ejecutar ejemplo	

Retornar

— @INFOUDO.OFICIAL

— Síguenos en Facebook@INFOUDO.OFICIAL

Categorías: #Ajax, #


[0] Atrás | Directorio
« Inicio
Apps Infoudo
Apps Infoudo ¡Descarga el icono directo en el menú de tu equipo!
[»] Las mejores Apps para tu celular
[»] Imágenes Gratis


Comenta o lee lo que otros opinan

COMPÁRTELO:

Indica que te gusta y comparte

Me Gusta :)Facebook Tuiteame :)Twitter .WhatsApp .Telegram . LinkedIn

También te puede interesar:

Validación de la existencia de un nombre de usuario en forma asincrónica (AJAX)
Pizarra interactiva multiusuario
De JSON a PHP (utilizando la función json_decode)
De JSON a JavaScript (utilizando utilizando la función parse)
De JavaScript a JSON (utilizando la función stringify del objeto JSON)
De PHP a JSON (utilizando la función json_encode)
Qué es JSON?
Encuenta con AJAX
Autocompletar un control de tipo text
Mostrar un tooltip con datos recuperados del servidor en forma asincrónica


« Qué es JSON?  |  De PHP a JSON (utilizando la función json_encode) »
 
Apps Infoudo
 
Buscador:
Powered by Google:


Web móvil
Imágenes
La Web

 

Síguenos por RSS


Puedes leerlos mediante el navegador Firefox, lectores de noticias en la computadora o el móvil o usando el servicio de Feedburner de Google para recibir las notificaciones por correo electrónico.
RSS - Suscribirse usando Feedburner de Google

email Recibir las nuevas publicaciones de Infoudo por email

Atom


»Ir a URL
.....
Registra Gratis Tu Negocio
....
Sugerir un nuevo sitio WAP

...
¡Bloguea Ya!

..
Registro de Profesionales(Abogados, escritores, doctores, licenciados, ingenieros, etc.)
.
Soporte

Síguenos en las redes sociales

Síguenos en Facebook facebook.com/INFOUDO.OFICIAL Síguenos en Twitter @infoudomon Síguenos en Instagram @infoudooficial Síguenos en Telegram t.me/Infoudooficial
Síguenos en Facebook facebook.com/tuinfou Síguenos en Twitter @infoudomonagas
Síguenos en WhatsApp INFO UDO Síguenos en YouTube youtube.com/@infoudooficial
Síguenos en Facebook facebook.com/SergioAlemanFans Síguenos en Twitter @SergioAleman1 Síguenos en Instagram @sergioalemanfans
Síguenos en WhatsApp wa.me/qr/Y7Q232VLZPR5O1 Síguenos en Tiktok @sergioalemanoficial Síguenos en Tiktok @sergioalemanfans
Síguenos en Telegram t.me/SergioAlemanOficial Síguenos en YouTube youtube.com/@sergioaleman
Síguenos en Facebook facebook.com/boludooficial Síguenos en Twitter @bolUDOoficial Síguenos en Instagram @boludooficial Síguenos en Telegram t.me/Boludooficial
Síguenos en WhatsApp BolUDOoficial Síguenos en YouTube youtube.com/@boludo.oficial

Mis cuentas sociales

FB
Twitter
Pinterest
Instagram
Otras

Móvil: (0426 683 6955 - 0412 8226575) - E-mail: [email protected] - [email protected] - WhatsApp: +58 (0426) 683.69.55


Copyscape
Volver arriba

Protocolo  |  Mapa del Sitio  |  Report Abuse - DMCA  |  Términos y Condiciones  |  Ayuda  |  Privacidad de Datos  |  Política de Cookies  |  Reportar un bug  |  Licencia: CC BY-NC-ND 3.0

Copyright ©2023 Infoudo. Todos los derechos reservados. Diseñado y Desarrollado por Sergio Alemán Mi perfil en GitHub


SUBIR