Ejemplo funcional con Json y php !

596 views
Skip to first unread message

Analyzer

unread,
Jul 9, 2014, 2:42:57 PM7/9/14
to phplatin...@googlegroups.com
Por aquí les dejo este ejemplo de cómo usar Json con php:

index.html

<html>
    <head>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
        <script type="text/javascript" src="cliente.js"></script>
    </head>
    <body>
    <div>
            Valor 1: <input type="text" id="text1">
            Valor 2: <input type="text" id="text2">
            <button id="botonCalcular">Calcular</button>
    </div>
    <div id="respuesta">
            Aquí se imprimirá la respuesta
    </div>
    </body>
</html>



cliente.js

// Recomiendo leer este archivo de abajo hacia arriba para comprenderlo mejor.
 
$(function(){
    function siRespuesta(r){
 
        // Crear HTML con las respuestas del servidor
        var rHtml = 'El resultado de la suma es: ' + r.suma + '<br/>';
            rHtml += 'El resultado del producto es: ' + r.producto;
 
        $('#respuesta').html(rHtml);   // Mostrar la respuesta del servidor en el div con el id "respuesta"
    }
 
    function siError(e){
        alert('Ocurrió un error al realizar la petición: '+e.statusText);
    }
 
    function peticion(e){
        // Realizar la petición
    var parametros = {
            variable1: $('#text1').val(),
            variable2: $('#text2').val()
    };
 
    var post = $.post("servidor.php", parametros, siRespuesta, 'json');
 
        /* Registrar evento de la petición (hay mas)
           (no es obligatorio implementarlo, pero es muy recomendable para detectar errores) */
 
    post.error(siError);         // Si ocurrió un error al ejecutar la petición se ejecuta "siError"
    }
 
    $('#botonCalcular').click(peticion); // Registrar evento al boton "Calcular" con la funcion "peticion"
});


servidor.php

<?php

$var1 = $_POST['variable1'];
$var2 = $_POST['variable2'];
 
$suma = $var1 + $var2;
$producto = $var1 * $var2;
 
// Array con las respuestas
$respuesta['suma'] = $suma;
$respuesta['producto'] = $producto;
 
echo json_encode($respuesta); // Enviar la respuesta al cliente en formato JSON

?>


Ojalá sea de utilidad..

Juan Andrés Peón

unread,
Jul 9, 2014, 3:28:39 PM7/9/14
to phplatin...@googlegroups.com
JSON es un formato excelente para comunicar datos, no solo entre el servidor y el navegador sino que (opinion personal) en general. Como formato lo encuentro mucho mas coherente, conciso y legible que XML, asi que salvo que alguna otra cosa me obligue, cuando armo APIs es mi formato de eleccion.

En PHP tenemos 2 funciones basicas para trabajar con estos datos:
- json_encode (http://www.php.net/manual/es/function.json-encode.php): convierte a JSON (tecnicamente a String, pero JSON "compliant") nuestros objetos, normalmente los ultimos 2 parametros (de 3) son opcionales y es raro que los toquen pero los pueden necesitar. El segundo parametro son opciones, sobre todo para encoding y el tercero es la "profundidad" que se incluye en la conversion, o sea cuantos niveles (maximo) de anidado se quieren incluir.
- json_decode (http://www.php.net/manual/es/function.json-decode.php): convierte un String JSON a formato PHP. Digo formato, porque puede convertir a Objeto u Array. Justamente el segundo parametro permite forzar a que se convierte en un Array asociativo (en lugar de objetos donde se aplicara), tambien acepta opciones y profundidad.

Como al final del dia, no es mas que un String, es vulnerable a problemas de encoding, por lo que recomiendo que generalicen y usen UTF8 para todo y se ahorren problemas.

Salut!


--
Has recibido este mensaje porque estás suscrito al grupo "PHP Latinoamérica" de Grupos de Google.
Visita este grupo en http://groups.google.com/group/phplatinoamerica.



--
"Diplomacy is the art of saying 'Nice doggie' until you can find a rock."
-- Will Rogers

Analyzer

unread,
Jul 9, 2014, 3:39:47 PM7/9/14
to PHP Latinoamérica
Hace rato puse un ejemplo de json por acá:

Este ejemplo de JSON que adapté del manual funciona bien

<html>

<?php

$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);
echo json_encode($arr);

?> 

<br>
<br>


<?php
$json = '{"a":1,"b":2,"c":3,"d":4,"e":5}';

var_dump(json_decode($json));
echo "<br>";
echo "<br>";
var_dump(json_decode($json, true));

?> 

</html>


Varias preguntas "gaznapiras" sobre JSON

Este formato tipo string parece ser muy útil por eso pregunté en este hilo acerca de la importancia de esta noticia:

Json-LD es ahora un estándar web

Lo que yo entiendo del Json es que es más cómodo que el famoso XML y por lo tanto la banda se decanta por usarlo y al parecer hasta la w3c ya lo aceptó como estándar.



El ejemplo que posteé fue porque había querido encontrar un ejemplo un poco más de la vida real que el que puse al principio, uno enviando datos del lado cliente al lado servidor.

Mas o menos estoy bien en lo que voy comprendiendo de json?

Si no, adelante, acepto cualquier corrección ya que no soy el tipo de persona que se considere que ya sabe cosas, cuando apenas estamos aprendiendo.

Saludos!
Reply all
Reply to author
Forward
0 new messages