2015-04-12 155 views
1

我正在向我的服務器上的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":""} 

爲什麼傳回的數據不正確驚動?任何幫助是極大的讚賞!

+2

您的JSON無效。運行它[jsonlint.com](http://jsonlint.com/) – Turnip

回答

8

您正在回顯循環中的JSON字符串,最終得到由較短的JSON字符串組成的長無效字符串。

你必須編碼和回聲它一次

$result = array(); 

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

echo json_encode($result); 
4

您的代碼背靠背吐出連續的JSON對象。總體而言,結果不是有效的JSON。

把你的數組放在一個封閉的單個數組中,然後用JSON編碼作爲響應。這將導致客戶端獲得一組對象,這將是有效的。

0

多個對象後,其他只是一個沒有有效的JSON。你的解析器抱怨第二個對象的開始,這是完全正確的。將對象包裝成一個數組,它應該可以工作。

1
$array = array(); 

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

echo json_encode($array);