Здравствуйте. Есть класс и два метода в нём: PHP: <?php class MakeAjax { public function makeStorageAddMaterialForm() { $filename = ROOT . '/views/ajax/storageAddMaterial.php'; $return = array(); if(file_exists($filename)) { ob_start(); include $filename; $ob = ob_get_clean(); $return['html'] = $ob; } else { $return['html'] = ''; $return['alerts'][] = '{PAGE_NOT_FOUND}'; } return json_encode($return); } public function makeStorageAddStorageForm() { $filename = ROOT . '/views/ajax/storageAddStorage.php'; $return = array(); if(file_exists($filename)) { ob_start(); include $filename; $ob = ob_get_clean(); $return['html'] = $ob; } else { $return['html'] = ''; $return['alerts'][] = '{PAGE_NOT_FOUND}'; } return json_encode($return); } ... } Как видите, первые два метода абсолютно идентичны, за исключением пути к файлу. Но при вызове первого возвращается как и нужно json строка с HTML строкой в поле 'html', а при вызове второй - возвращается просто HTML строка, без обёртки JSON. Я подозреваю что что-то с буфером недопонял. Если закомментировать строку: PHP: include $filename; во втором методе, возвращается JSON строка с пустым полем HTML: Код (Javascript): {"html":""} --- Добавлено ---В общем, проблема была в ошибке в подключаемом файле. Но всё равно не понял почему содержимое файла не записалось в нужный элемент массива, а вместо этого добавилось функцией include