2012-02-10 106 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 2012-02-10 10:27:27

+0

^檢查我的編輯 – GSTAR 2012-02-10 10:30:05

+0

包含是否返回任何內容? – PeeHaa 2012-02-10 10:30:42

回答

3

include是一個聲明,而不是一個函數(忽略了function.include.php部分)。它不會將解析結果返回到您的$view變種,儘管該文件將包含在json_encode之上。

您應該使用ob_start捕捉由mihneasime描述的方式的觀點的評估結果:

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),其中規定include可以返回包含文件中的return()的值。 – joar 2012-02-10 10:33:06

+0

嗨,謝謝你的幫助。我也經常在一個我經常使用的框架中看到一個非常類似的解決方案 - 唯一的主要區別是它們的版本具有'ob_implicit_flush(false);'在'ob_start'之後 - 這有什麼區別嗎? – GSTAR 2012-02-11 20:14:18

0

使用fopen和朋友來讀取文件。 include,包括他們。

+0

[包括CAN返回的東西。](http://php.net/manual/en/function.include.php) – PeeHaa 2012-02-10 10:28:07

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

應該做的伎倆爲joar建議。