我已经搜索过该错误并查找了很多帖子..但我仍然无法弄清楚这段代码有什么问题:
我的ajax电话:
function myCall3() {
$.ajax({
type:"POST",
url:"ajax3.php",
dataType:"json",
success:function(response){
alert(response[0]);
}
});
}
我的mysql / php代码:
<?php
// QUERY NEW VINE
$array = array();
$myquery = "SELECT * FROM table1 ORDER BY rand() LIMIT 9";
$result = mysql_query($myquery)
OR die("Error: $myquery <br>".mysql_error());
while($row = mysql_fetch_object($result)){
$currentid = "$row->id";
$currentname = "$row->name";
$currenturl = "$row->url";
$currentimage = "$row->image";
$array[] = array('id'=>$currentid,'url'=>$currenturl,'name'=>$currentname,'image'=>$currentimage);
}
echo json_encode($array);
?>
当我警告错误时说:
SyntaxError:SyntaxError:JSON.parse:意外字符
答案 0 :(得分:2)
你继续覆盖循环中的$ array,然后过早地回复它。
$array = array('id'=>$currentid,'url'=>$currenturl,'name'=>$currentname,'image'=>$currentimage);
echo json_encode($array);
}
你应该将每一行推到$ array变量,然后在循环外推送json_encode。
$array = array();
$myquery = "SELECT * FROM table1 ORDER BY rand() LIMIT 9";
$result = mysql_query($myquery)
OR die("Error: $myquery <br>".mysql_error());
while($row = mysql_fetch_object($result))
{
$currentid = "$row->id";
$currentname = "$row->name";
$currenturl = "$row->url";
$currentimage = "$row->image";
$array[] = array('id'=>$currentid,'url'=>$currenturl,'name'=>$currentname,'image'=>$currentimage);
}
echo json_encode($array);
然后你的javascript回调将需要一个数组,而不是一个对象,即
console.log(response[0]);
注意:你可以直接将$ row推到你想要的$ array上。
答案 1 :(得分:1)
$newArray = array();
while($row = mysql_fetch_object($result) {
$newArray[] = $row;
}
echo json_encode($newArray);
然后,在JS中你必须遍历数组。
答案 2 :(得分:0)
您的输出如下所示:
{"id":123,"url":"http://.../","name":"Blah","image":"blah.png"}{"id":456,.....
这对我来说不合适:p
看起来您的JavaScript只需要一行,所以请尝试LIMIT 1
。