0

print_r($items)配列を使用すると、配列が空ではないことがわかりますが、出力時に配列値は「未定義」として返されます。ここでの問題は何でしょうか?

MySQL:

「名前」、「価格」、「日」、「キュージャンプ」、「クロージング」、「ドア」という列を持つ「夜」というテーブル。それらはすべて入力されています。

eventinfo.php:

<?php

header('Cache-Control: no-cache, must-revalidate');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Content-type: application/json');

include('functions.php');
connect();

$night = $_POST['club'];
// this echos fine
$night = mysql_real_escape_string($night);

$query = "SELECT * FROM nights WHERE name = '$night'";

    $result = mysql_query($query);
    $items = array();

    if($result && mysql_num_rows($result) > 0) { 
        while ($row = mysql_fetch_array($result)) { 
        $items[] = array("price"=>$row['price'], "day"=>$row['day'], "queue jump"=>$row['queue jump'], "closing"=>$row['closing'], "doors"=>$row['doors']);
        }
    } 

    mysql_close(); 
    // convert into JSON format and print

    echo json_encode($items);
?>

JS:

<script type="text/javascript">

    $(document).ready(function() {
// for simplicity's sake, but ultimately I'd like to load all the information
            $('#right_inside').html('<h2>' + $('#club').val() + '</h2>');
    });

    $('#club').change(function(event) {
        $.ajax({
            type: "post",
            url: "eventinfo.php",
            data:  $(this).serialize(),
            success: function(data) {
                $('#right_inside').html('<h2>' + $('#club').val() + '</h2><p>Day: ' + data.day + '</p>');
                },
            dataType: "json"
        });
    });

</script>
4

1 に答える 1

5

JSON 構造が間違っています。データは実際には配列です。

に変更data.dayしてみてくださいdata[0].day

注: JSON の構造を確認するには、ajax の成功で JSON.stringify(data) を使用する必要があります。

$.ajax({
  type: "post",
  url: "eventinfo.php",
  data:  $(this).serialize(),
  success: function(data) {
     alert(JSON.stringify(data));
     //or
     console.log(JSON.stringify(data));
  },
   dataType: "json"
 });
于 2012-06-13T23:17:16.220 に答える