2012-02-10 7 views
1

Thsiが動作していないよう:)(json_encode内のファイルを含める

$msg="Your changes have been saved successfully"; 

$view=include('application/view/admin/cms/_slides-current.php'); 

$return_array=array('success'=>true, 'msg'=>$msg, 'view'=>$view); 

echo json_encode($return_array); 

配列は、jQueryのAjaxの成功コールバックに戻って渡される必要があります。誰にどのようにそれを行う必要がありますか?

インクルードファイルは単なるHTMLテンプレートです。このHTMLテンプレートはページに挿入されます。

json_encode()を使用して私がやろうとしていること以外の方法はありますか?

success: function(result){ 
    alert(result.msg); 

    if(result.success == true) 
    { 
     $('#slides').html(result.view); 
    } 
} 
+0

あなたのインクルードファイルはどのように見えますか?何かを返すことさえありますか? – PeeHaa

+0

^私の編集を確認してください – GSTAR

+0

インクルードは何かを返しますか? – PeeHaa

答えて

3

includeは文であり、関数ではありません(function.include.php部分は無視してください)。ファイルはあなたのjson_encodeのすぐ上に含まれますが、解析結果は$viewに返されません。

あなたはmihneasimeで説明したように、ビューの評価を行った結果をキャプチャするためにob_startを使用する必要があります。joarが提案されているよう

ob_start(); 
include 'application/view/admin/cms/_slides-current.php'; 
$view = ob_get_clean(); 
ob_end_flush(); 
+0

@PeeHaa - あなたは[このセクション](http://php.net/ manual/en/function.include.php#example-129)インクルードすると、インクルードファイルの 'return()'の値を返すことがあります。 – joar

+0

こんにちは、ご協力いただきありがとうございます。私は定期的に使用しているフレームワークで、あなたと非常によく似たソリューションを見てきました。唯一の主な違いは、ob_implicit_flush(false);が 'ob_start'の直後にあることです。 – GSTAR

0

ファイルを読むにはとフレンドを使用してください。 includeは、の場合はです。

+0

[何かを返すことができます。](http://php.net/manual/en/function.include.php) – PeeHaa

2
ob_start(); 
include 'application/view/admin/cms/_slides-current.php'; 
$view = ob_get_clean(); 

は、トリックを行う必要があります。

関連する問題