2012-01-10 52 views
0

我使用echo json_encode($my_array)使用PHP創建JSON訂閱源。 傳遞給瀏覽器的結果字符串應如下所示: [{"ACC_NUM":"147545","BOOK_DATE":"2011-10-22"},{"ACC_NUM":"147546","BOOK_DATE":"2011-10-22"}]Webkit截斷JSON訂閱源的最後一個字符

在Firefox中,收到的json字符串如圖所示。但是,在webkit瀏覽器(Safari,Chrome)中,字符串的最後一個字符被切斷。這會導致解析錯誤。

我甚至嘗試將應用程序/ json和text/html作爲無效服務。

有誰知道發生了什麼事?我在這裏做錯了什麼?提前致謝。

後端代碼: // $ result包含從MySQL查詢

if($result) { 
    $arr = array(); 
    foreach($result as $key => $val) { 
     $arr[$key] = $val; 
    } 
    echo json_encode($arr); 
} 

,這是保存在index.php文件,我可以在瀏覽器中查看並顯示結果的JSON提要行。

+1

根據你提供的信息是不可能分辨的。顯示你的JavaScript代碼(如果可能的話,你的服務器端代碼也是如此)。 – 2012-01-10 22:42:04

+0

您是否嘗試過在Chrome中使用XHR控制檯來查看原始響應?如果它顯示完整的JSON字符串,那麼它可能是一個JavaScript問題。 – jprofitt 2012-01-10 22:44:51

+1

我剛測試過這個例子:[stackoverflow.com/questions/8807558/how-to-create-forms-with-conditional-options/8808967#8808967](http://stackoverflow.com/questions/8807558/how-to -create-forms-with-conditional-options/8808967#8808967)在safari 4.0.4(531.21.10)和chrome 16.0.912.75 m上,都在win7上。在這兩個json被正確接收和解析。 你應該提供更多的信息和/或工作示例與此錯誤。 – DamirR 2012-01-10 22:49:07

回答

4

對於Slimframework遇到此問題的人。 在回顯json字符串之後,只需添加一個退出命令。

if($result) { 
    $arr = array(); 
    foreach($result as $key => $val) { 
     $arr[$key] = $val; 
    } 
    echo json_encode($arr); 
    exit; // <------------------- Hallelujah!!! 
}