2012-04-06 18 views
6

Qui ho un semplice script php che visualizza alcuni valori da un database in 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; 

Questo visualizza bene, ecco l'esempio di stampa:

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

Poi, quando l'immagine viene cliccato questo jQuery è chiamato:

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); 
     } 
    }); 

Tuttavia, il (titolo, data & ora) le variabili vengono visualizzate come "non definite" nella casella di avviso. Ho provato diversi modi di implementare la chiamata ajax e la stessa cosa succede ogni volta. È la prima volta che ci provo, ma non riesco a capirlo.

+3

Hai usato un'intestazione corretta per il tuo script PHP? 'header ('Content-Type: application/json');' – brezanac

risposta

21

La stringa JSON ha un formato di matrice. È necessario accedere alle proprietà oggetto JSON come questo

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

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

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

Se controlli il formato JSON e un allineamento non è necessario, utilizzare un oggetto JSON con questo formato.

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

In questo caso è possibile mantenere il codice come è ora.

+0

Questo va bene. Grazie Claudio. – loxyboi

Problemi correlati