我有一个已构建的复杂php应用程序,它不能通过MVC设计模式工作,也没有内置的模板系统(twig等)。
会发生的是,不是在包含模板的末尾获取变量(html out put) - >它打印html(包括'foo / somepagethatcontainshtmlandphp.php')。
我的问题?从具有ajax的远程服务器请求该页面。我想获得由JSON编码的页面。并使用json.parse在远程服务器上解码它。
我的问题:
如何编码已打印的html输出并将其渲染为JSON。它甚至可能吗?
我的档案结构: 模板/ sometmp.php
<html>
<head>
<?php echo 'some shitty way to use html and php together'; ?>
</head>
<body>
<?Php echo 'some lame php and html code written in the same place'; ?>
</body>
</html>
的index.php
远程服务器:
$.ajax (
.....
.....
success: function(data) {
console.log(JSON.parse(data));
}
);
先谢谢。
答案 0 :(得分:3)
使用输出缓冲。 E.g:
ob_start();
include 'foo/somepagethatcontainshtmlandphp.php';
$html = ob_get_clean();
echo json_encode(array(
'some_data' => ...,
'html' => $html
));
请将此代码视为草图,您应该从中开始。还有更多事情要考虑,例如我应该使用include或require 或我应该使用JSON还是简单的文本响应。答案取决于您,并取决于您的应用程序/网站的进一步逻辑。
有关输出缓冲的更多信息 in the documentation 。
答案 1 :(得分:2)
如果我理解你的问题,你可以简单地缓冲包含文件的输出,将缓冲区提供给json_encode并输出。
<?php
ob_start();
include 'foo/somepagethatcontainshtmlandphp.php'
$output = ob_get_clean()
echo json_encode($output);
?>
这可以通过Javascript解析为json。