JSON オブジェクトを PHP から Javascript に渡そうとしています。オブジェクトは SQL データベースから入力されています。ここでは、私が使用している PHP コードを示します。
<?php
$conn = mysql_connect("localhost","root","");
if(! $conn )
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db('db') or die( 'Error'. mysql_error() );
$query = "SELECT * FROM products;";
$results = mysql_query($query, $conn);
$return = array();
while($result = mysql_fetch_assoc($results))
{
$mount = array('product_code' => $results['product_code'], 'colour' => $results['colour'], 'price' => $results['price']);
array_push($return, $mount);
}
return json_encode($return);
?>
いくつかの変数名を変更しましたが、同じ機能があります。
この .php ファイルに対して AJAX Get を実行しようとすると、以下に示す JSON.Parse 部分コードでクラッシュします。
$.get("JSON.php", function(data) {
var JSONdata = JSON.parse(data);
alert(JSONdata[0].colour);
});
私のアラートはテストのためだけにあります。問題が $return 配列の構築にある可能性があることを理解しています。JSON は初めてなので、どんな助けでも大歓迎です。
編集:以下からすべての情報を取得して、PHPコードをそのように修正しました。
<?php
$conn = mysql_connect("localhost","root","");
$error = array("result" => false, "error" => mysql_error());
if(! $conn )
{
die(json_encode($error));
}
mysql_select_db('db') or die(json_encode($error));
$query = "SELECT * FROM products;";
$results = mysql_query($query, $conn);
$return = array();
while($result = mysql_fetch_assoc($results))
{
$mount = array('product_code' => $result['product_code'], 'colour' => $result['colour'], 'price' => $result['price']);
array_push($return, $mount);
}
echo json_encode($return);
?>
mysql_* 関数をより互換性のある新しいバージョンに変更することを検討しています