2013-06-20 166 views
0

我想要做的是響應PHP文件輸出的JSON數組。PHP ob_end_clean不清除緩衝區

header("Content-Type: application/json"); 
$ret["response"] = array(); 

$items = getItems(); 
$ret["response"] = array(); 
ob_start(); 
foreach($items as $model){ 
    include("view/item.php"); 
    $ret["response"][] = ob_get_contents(); 
    ob_end_clean(); 
} 
ob_end_clean(); 
echo json_encode($ret); 

文件view/item.php包含一些PHP echo語句,但問題是,響應包含include語句的輸出和JSON編碼的項目。

我該如何讓腳本只返回JSON部分?

+1

如果你在'foreach'中添加'ob_start()'會怎麼樣? – mak

回答

1

試試你的代碼一樣,

foreach($items as $model){ 
    ob_start(); 
    include("view/item.php"); 
    $ret["response"][] = ob_get_contents(); 
    ob_end_clean(); 
} 
ob_end_clean(); 

,或者

ob_start(); 
foreach($items as $model){ 
    include("view/item.php"); 
    $ret["response"][] = ob_get_contents(); 
} 
ob_end_clean(); 
0

第二個選項將正常工作。

ob_start(); 
foreach($items as $model){ 
    include("view/item.php"); 
    $ret["response"][] = ob_get_contents(); 
} 
ob_end_clean();