2012-02-10 84 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建议。