我必须在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响应以及全部。实现这一目标的最佳方法是什么?我采取了一种非常错误的方式吗?我不是网络初学者,但我也不是专家。
答案 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>