2012-02-10 3 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); 

Массив должен быть передан обратно в Ajax успеха обратного вызова JQuery. Кто-нибудь знает, как это должно быть сделано?

Входящий файл - это просто шаблон HTML. Этот шаблон HTML будет вставлен на страницу.

Есть ли какой-либо способ, кроме использования json_encode(), делать то, что я пытаюсь сделать?

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

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

Как выглядит ваш файл include. Он что-то даже возвращает? – PeeHaa

+0

^Проверить мое редактирование – GSTAR

+0

Включает ли что-нибудь возвращение? ??? – PeeHaa

ответ

3

include - инструкция, а не функция (не обращайте внимания на часть function.include.php). Он не вернет обработанный результат в ваш $view variabe, хотя файл будет включен чуть выше вашего 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

+0

Привет, спасибо за помощь. Я также видел очень похожее решение для вас в рамках, которые я использую регулярно - единственное существенное отличие состоит в том, что в их версии есть 'ob_implicit_flush (false);' прямо после 'ob_start' - это имеет значение? – GSTAR

0

Используйте fopen и друзья, чтобы прочитать файлы. include для включая их.

+0

[Включить CAN-возврат.] (Http://php.net/manual/en/function.include.php) – PeeHaa

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

Если сделать трюк, как Joar предложил.

Смежные вопросы