ccc

Mostrando entradas con la etiqueta JSON. Mostrar todas las entradas
Mostrando entradas con la etiqueta JSON. Mostrar todas las entradas

Ajax: llamar a un PHP que devuelve un JSON de un array asociativo

generarJSON.php:
$arr = array("1939" => "Lo que el viento se llevó", "1940" => "Las uvas de la ira", "1941" => "Ciudadano Kane");
echo json_encode($arr);

getJSONFromPHP.php:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
</head>
<body>
<script>
$.ajax({
 async: false,
 type: "POST",
 url: "generarJSON.php",
 data: {
 },
 success: function(data) {
$.each(data, function(key, val) {
   console.log(key);
   console.log(val);
});
  },
 error: function(data){
 }
});
</script>
</body>
</html>


También lo puedes hacer:
success: function(data) {
  arr = $.parseJSON(data); // lo convierte a Array
          ...
}

OJO: Nunca poner en el datatype del Ajax que es JSON (pq no es propiamente un json)

Ajax: Leer directamente fichero JSON

peliculas.json:
[
  {
"titulo": "Lo que el viento se llevó",
"director": "Victor Fleming",
"anno": "1939"
  },
  {
"titulo": "Rebeca",
"director": "Alfred Hitchcock",
"anno": "1940"
  },
  {
"titulo": "Qué verde era mi valle",
"director": "John Ford",
"anno": "1941"
  }
]

getJSON.php:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
</head>
<body>
<script>
$.getJSON("peliculas.json", function( data ) {
  $.each(data, function(key, val) {
  // console.log(key);
  // console.log(val);
  console.log(val["titulo"]);
  console.log(val["director"]);
  console.log(val["anno"]);
  });
});
</script>
</body>
</html>


Otra forma de recorrer un json (creado a partir de un array asociativo) sería:
html = '';
for(item of datosAux){
html += "<li>Fecha: "+item.fecha+" - "+item.valor+"</li>";
}
$("#result").html(html);

JSON: Crear una cadena json mediante PHP

$data = array("1" => "James Stewart", "2" => "Gary Cooper", "3" => "James Cagney");

$jsontext = "[";
foreach($data as $key => $value) {
    $jsontext .= "{valor: '".addslashes($key)."', texto: '".addslashes($value)."'},";
}
$jsontext = substr_replace($jsontext, '', -1); // quitar la última coma
$jsontext .= "]";

JSON: Detectar si una cadena JSON está bien escrita

// json correcto
$json[] = '{"Uno": "12345"}';

// json incorrecto al usar comillas simples dentro
$json[] = "{'uno': '12345'}";


foreach ($json as $string) {
    echo "Decodificando la cadena: ". $string."<br>";
    json_decode($string);
    switch (json_last_error()) {
        case JSON_ERROR_NONE:
            echo "No hay ningún error. Todo correcto<br>";
        break;
        case JSON_ERROR_DEPTH:
            echo ' - La cadena ha excedido el máximo permitido<br>';
        break;
        case JSON_ERROR_STATE_MISMATCH:
            echo ' - JSON con formato incorrecto o inválido <br>';
        break;
        case JSON_ERROR_CTRL_CHAR:
            echo ' - Inesperado carácter encontrado<br>';
        break;
        case JSON_ERROR_SYNTAX:
            echo ' - Syntax error en el JSON<br>';
        break;
        case JSON_ERROR_UTF8:
            echo ' - Error UTF8: Posible codificación incorrecta<br>';
        break;
        default:
            echo ' - Error Desconocidos<br>';
        break;
    }
}

JSON: Serializar: Convertir un array a una cadena, y viceversa

<?php
$arr = array('a' => 1, 'b' => 22, 'c' => 333, 'd' => 4444, 'e' => 55555);
$texto = json_encode($arr);
echo $texto."<br>";

$newArr = json_decode($texto);
print_r($newArr);

// para acceder a cada una de las variables
echo "<br>";
echo "a vale:".$newArr->a."<br>";
echo "c vale:".$newArr->c."<br>";

// Sacar todos los valores
foreach ($newArr as $clave=>$valor) {
echo $clave." vale ".$valor."<br>";
}
?>