我正在尝试将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);
?>
我更改了一些变量名称,但是有相同的功能。
现在,当我尝试执行AJAX Get to this .php文件时,它崩溃了下面显示的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_ *函数更改为新的更兼容的版本
答案 0 :(得分:4)
你在php脚本的末尾使用'return',回显json编码的字符串:
echo json_encode($return);
此外,将contenttype标头设置为application / json可能是个好主意。
编辑:
如果脚本失败,则使用die('error'.mysql_error());
这也是对ajax调用的响应,但不是json,而parse函数会抛出异常
我建议改为返回一个json对象,如:
$error = array("result" => false, "error" => mysql_error());
die(json_encode($error));
同样如评论中所述,不要使用mysql_ *函数,它们在以后的php版本中不推荐使用,并且在将来的版本中将全部从php中删除。
查看mysqli甚至更好,PDO。