2013-06-20 3 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(); 
관련 문제