SyntaxError:JSON.parse:JSON数据后出现意外的非空白字符有什么不对吗?

时间:2014-02-16 17:38:11

标签: php mysql ajax json

我已经搜索过该错误并查找了很多帖子..但我仍然无法弄清楚这段代码有什么问题:

我的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:意外字符

3 个答案:

答案 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