Archivo de la etiqueta: JSON

Error json_encode() json_decode() en Ubuntu 13.10

Durante las pasadas Navidades, y después de pensármelo mucho, actualice la versión de Ubuntu del ordenador que uso para desarrollar. Después de unos cuantos problemas, sobre todo con la tarjeta gráfica, conseguí actualizarlo y dejarlo funcional. Una vez me puse de nuevo a desarrollar me encontré con el siguiente error.

PHP Fatal error: Call to undefined function json_encode()

Resulta que con la actualización de Ubuntu, también se actualiza la versión de PHP, y con esta actualización no se instalan las extensiones de JSON, decir que este error os saldrá si usáis las funciones JSON, las cuales, si realizáis peticiones AJAX, casi seguro que implementáis.

Como solución, lo tipico, abrimos la consola, y ejecutamos el siguiente comando para instalar


sudo apt-get install php5-json

Una vez instalado ya no volverá a salirnos este error.

http://es1.php.net/manual/en/json.installation.php

Anuncios

Acceder a datos JSON con jQuery – jQuery Tips

Una de las maneras para rellenar un formulario dinámicamente en base a una petición AJAX es por medio de JSON.

Supongamos el siguiente escenario. Tenemos un formulario que se tiene que autorellenar en base a una petición AJAX, por ejemplo, le pasamos el código de una persona y nos tiene que mostrar los datos.


// Fichero datos.php

$datos = array(

1 => array('nombre' => 'Yo', 'apellidos' => 'mismo'),

2 => array('nombre' => 'Tu', 'apellidos' => 'aquel'),

);

$codigo = filter_input(INPUT_POST, 'codigo', FILTER_SANITIZE_NUMBER_INT);

foreach ($datos as &$dato) {
 $dato = utf8_encode($dato);
 }
 echo json_encode($datos[$codigo]);


<!-- Fichero formulario.html -->

<form id='formulario'>
 <input type='text' id='codigo'>
 <button type='button' id='buscar'>Buscar Registro</button>
 <input type='text' id='nombre'>
 <input type='text' id='apellidos'>
</form>
<script>
$('#buscar').click(function(){
 $.post('datos.php', {codigo:$('#codigo').val()}, function(data){
 data = JSON.parse(data);
 $('#nombre').val(data.nombre);
 $('#apellidos').val(data.apellidos);
 });
 return false;
});
</script>

En este ejemplo los datos están almacenados dentro de un array, lo normal es que fueran resultado de una consulta SQL.

En el formulario pongo, por ejemplo, el 1 para obtener los datos, estos se mandan vía post al fichero de datos, antes de devolverlos los codifico con utf8_encode para que no de ningún error, luego les damos formato con json_encode, y una vez que lo recibimos los tenemos que tratar con JSON.parse para poder acceder a ellos como si fueran un objeto.