从渲染中禁用HTML / PHP输出

时间:2015-07-07 06:25:08

标签: php html ajax xml

我必须在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响应以及全部。

实现这一目标的最佳方法是什么?我采取了一种非常错误的方式吗?我不是网络初学者,但我也不是专家。

2 个答案:

答案 0 :(得分:1)

您可以在var where = {calendarId: this.params._id}; var options = {fields: {postDate: 1}}; // Specify the fields your actually using var currentPosts = Posts.find(where, options); 内绑定xml部分。一旦得到响应,就从div内部提取内容。 check this

答案 1 :(得分:0)

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

<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>