Задать вопрос
sorry_i_noob
@sorry_i_noob

Передаю через AJAX клиенту с помощью ф-ии «file_get_content» содержимое php файла (для вывода в popup). В popup пишется также php код. Как исправить?

Здравствуйте.
Отправляю данные с сервера клиенту вот так:
file_get_contents(VIEWSPATH . 'pages/login' . '.php')

На клиенте вывожу их вот так:
$.ajax({
			type: "GET",
			url: '/ajax/login',
			dataType: "json",
			success: function (data) {
				if (data.status) {
					custom_popup({
						html: data.message,
						ok_btn: false
					});
				}
				page_loading = false
			}
		});

В итоге в popup рисуется страница вместе с php кодом. Прикладываю скриншот. Как это исправить?
5b3b6903c0611961416709.png
  • Вопрос задан
  • 188 просмотров
Подписаться 1 Простой 2 комментария
Решения вопроса 2
sorry_i_noob
@sorry_i_noob Автор вопроса
Решил проблему вот так:
ob_start();
include(VIEWSPATH . 'pages/login' . '.php');
$output = ob_get_contents();
ob_end_clean();
return $this->render_ajax($output);

Кто знает, может, это можно по-короче написать? Например, есть уже готовая функция, которая содержит что-то типа этого кода.
Ответ написан
Комментировать
Maksclub
@Maksclub Куратор тега PHP
maksfedorov.ru
Кто знает, может, это можно по-короче написать?

ob_start();
include(VIEWSPATH . 'pages/login' . '.php');
return $this->render_ajax(ob_get_clean();


ob_get_clean() по сути выполняет ob_get_contents() и ob_end_clean().
php.net/manual/ru/function.ob-get-clean.php
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@cloudz
file_get_content берет весь текст файла php и собирает в строку, естественно он выведет и php код тоже.
предположу, что нужно возвращать в передаваемом php только нужный текст, а не весь контент php. написать какую-то функцию возвращающую ожидаемый ответ
Ответ написан
Комментировать
paulfcdd
@paulfcdd
PHP/Sf/WEB developer
а вы не пробовали передавать для вывода в форму то, что действительно предназначено для вывода в форму - шаблон хтмл с формой с указаным экшеном, например?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы