encode包含/要求输出到json

时间:2014-02-21 09:47:16

标签: php jquery ajax json header

我有一个已构建的复杂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));
      }
);

先谢谢。

2 个答案:

答案 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。