$ .jquery ajax datos devueltos (json) aparece como 'indefinido'

2012-04-06 51 views
6

Aquí tengo un script php simple que muestra algunos valores de una base de datos en formato json.

$source = $_GET['source']; 

$query = mysql_query("SELECT * FROM images WHERE big_thumb = '" . $source . "'"); 

$results = array(); 

while($row = mysql_fetch_array($query)) 
{ 
    $results[] = array(
     'title' => $row['title'], 
     'date' => $row['upload_date'], 
     'time' => $row['upload_time'] 
    ); 
} 

$json = json_encode($results); 

echo $json; 

Esta muestra, aquí está un ejemplo de impresión fina:

[{"title":"Torus","date":"2012-04-04","time":"23:06:14"}] 

Luego, cuando una imagen se hace clic en este jQuery se llama:

var image_src = $(this).attr("alt"); // <= This works fine 

    $.ajax({ 
     url: 'inc/get_image_details.php', 
     data: {source : image_src}, 
     dataType: "json", 
     success: function(data) 
     { 
      title = data.title; 
      alert(title); 

      date = data.date; 
      alert(date); 

      time = data.time; 
      alert(time); 
     } 
    }); 

Sin embargo, el (título, fecha & tiempo) las variables se muestran como 'indefinido' en el cuadro de alerta. He intentado varias formas de implementar la llamada ajax y siempre sucede lo mismo. Es la primera vez que lo intento, pero no puedo entenderlo.

+3

¿Utilizaste un encabezado adecuado para tu script PHP? 'header ('Content-Type: application/json');' – brezanac

Respuesta

21

Su cadena json tiene un formato de matriz. Es necesario acceder a las propiedades del objeto JSON como esto

title = data[0].title; 
alert(title); 

date = data[0].date; 
alert(date); 

time = data[0].time; 
alert(time); 

Si controla el formato JSON y una matriz no es necesario, utilizar un objeto JSON con este formato.

{"title":"Torus","date":"2012-04-04","time":"23:06:14"} 

En este caso, puede conservar su código tal como está ahora.

+0

Eso está bien. Gracias, Claudio. – loxyboi

Cuestiones relacionadas