8

ここに、データベースからのいくつかの値を json 形式で表示する単純な php スクリプトがあります。

$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;

これは問題なく表示されます。出力例を次に示します。

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

次に、画像がクリックされると、この jquery が呼び出されます。

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

ただし、(タイトル、日付と時刻) 変数はアラート ボックスに「未定義」として表示されます。ajax 呼び出しを実装する複数の方法を試しましたが、毎回同じことが起こります。初めてみたのですがよくわかりません。

4

1 に答える 1

23

json文字列は配列形式です。このようなjsonオブジェクトのプロパティにアクセスする必要があります

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

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

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

json形式を制御し、配列が不要な場合は、この形式のjsonオブジェクトを使用してください。

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

この場合、コードを現在の状態に保つことができます。

于 2012-04-06T16:05:47.340 に答える