【问题标题】:Disable HTML/PHP output from rendering禁用渲染中的 HTML/PHP 输出
【发布时间】:2015-07-07 06:25:08
【问题描述】:

我必须在 ajax 中检索 xml,但我无法编写单独的 php 脚本。原因是因为这些数据取决于上下文:库、常量、包含等...所以我发现的唯一方法是像http://xx.xx.xx.xx/myApp?param=U 这样以正常方式调用 url,因此网站加载数据库抽象层、常量...但它也呈现html。我想清除xml部分前后的所有内容。

这是一个架构:

<html>
    ...constant loading, libraries...
    ...some html...
    ob_end_clean(); //It clears everything before and seems to work (?)
    header('Content-type: text/xml');
    ...xml generation...
    ...some html ...
</html>

由于 xml 生成后的 html,我遇到了 xml 语法错误。

综上所述,我需要发送 xml 响应,仅此而已。

实现这一目标的最佳方法是什么?我真的走错路了吗?我不是网络初学者,但我也不是专家。

【问题讨论】:

  • 省略 &lt;html&gt; 和 &lt;/html&gt; 标签,如果脚本生成 XML,则不需要它们。
  • 你没有理解我的问题。这不是脚本,这是一个在中间生成 xml 的 html 页面。
  • 问题是ob_end_clean从缓冲区中移除了所有之前的输出,所以&lt;html&gt;标签被移除了。因此,&lt;/html&gt; 不匹配任何内容。如果您希望 XML 位于 HTML 中间,请不要清除输出缓冲区。
  • 你应该有一个特定的视图来渲染 xml,如果你可以改变脚本,也许你可以用一个特殊的参数来处理这个,比如xx.xx.xx.xx/myApp?param=U&type=xml,它只会渲染 xml 部分?
  • 我必须渲染 xml 吗?我的意思是它只是得到一些整数。我想我误解了 jquery/ajax 检索 xml 数据的方式。它需要在 html 标记内还是有特定的 xml 协议?或者也许我应该使用 fwrite 生成一个远程 xml 文件?

标签: php html ajax xml


【解决方案1】:

您可以将 xml 部分绑定到 div 中。并在收到响应后从该 div 中提取内容。 check this

【讨论】:

  • 此解决方案有效,但仍有任何方法可以在某些时候“禁用”渲染?
  • 是什么意思?你想在哪里禁用渲染?
【解决方案2】:

在 XML 之后添加 exit;,这样 HTML 就不会损坏 XML 文档。您应该测试 PHP 是否应该呈现 HTML 页面或仅呈现 XML。比如使用查询字符串来指定你想要的 XML 输出而不是 HTML。或者,如果您打算在 JavaScript 中使用 XML,并且需要 Ajax 来处理 XML,您可以让 PHP 测试 X-Requested-With 标头的存在,如下所示:

<html>
    ...constant loading, libraries...
    ...some html...
<?php
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) &&
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest')
{
  $output='xml';
}
if($output=='xml')
{
  ob_end_clean();
  header('Content-type: text/xml');
}
?>
...xml generation...
<?php
if($output=='xml')
{
  exit;
}
?>
    ...some html ...
</html>

【讨论】:

  • 上帝...这是关键字exit...好吧,我现在的做法是ob_end_clean();header('Content-type: text/xml'); ...xml generation... flush(); exit;
猜你喜欢
  • 1970-01-01
  • 2017-04-29
  • 2016-11-13
  • 2014-03-26
  • 2013-09-25
  • 2022-01-19
  • 2016-12-07
  • 1970-01-01
  • 2012-02-15
相关资源
最近更新 更多