意外的标记 {

时间:2015-04-12 14:11:54

标签: javascript jquery ajax json

我向我的服务器上的php脚本发送AJAX帖子请求,服务器以JSON格式返回数据。当我尝试提醒结果时,我收到以下错误:Uncaught SyntaxError: unexpected token {两次。

这是我的AJAX电话:

var articles = $.post("process/get_articles.php");
    articles.done(function(data){
        var result = $.parseJSON(data);
        alert(result);
    });

我的服务器端代码:

while($query->fetch()){
    $result = array("ID"=>$Art_number, "Article"=>$Article, "Image"=>$Image_link);
    $result = json_encode($result);
    echo $result;
}

返回以下内容:

{"ID":1,"Article":"Article 1","Image":"http:\/\/wwww.mydomain.com\/images\/img.jpg"}{"ID":2,"Article":"Article2","Image":""}{"ID":3,"Article":"Article 3","Image":""}

为什么返回的数据没有得到正确的警报?非常感谢任何帮助!

4 个答案:

答案 0 :(得分:7)

你在循环中回显JSON字符串,最终得到一个由较短的JSON字符串组成的长无效字符串。

您必须对其进行编码并回显一次

$result = array();

while($query->fetch()){
    $result[] = array("ID"=>$Art_number, "Article"=>$Article, "Image"=>$Image_link);
}

echo json_encode($result);

答案 1 :(得分:3)

您的代码背靠背连续吐出JSON对象。总的来说,结果是无效的JSON。

将您的数组放在一个封闭的单个数组中,然后将 作为响应进行JSON编码。这将导致客户端获得一组有效的对象。

答案 2 :(得分:1)

$array = array();

while($query->fetch())
    $array[] = array("ID"=>$Art_number, "Article"=>$Article, "Image"=>$Image_link);

echo json_encode($array);

答案 3 :(得分:0)

一个接一个的更多对象是无效的JSON。你的解析器抱怨第二个对象的开始,这是完全正常的。将对象包装到一个数组中它应该可以工作。