通过AJAX从包含HTML内容的页面获取PHP脚本结果

时间:2012-09-05 17:16:22

标签: php ajax

我有一个包含HTML内容的PHP页面。现在我在HTML之间运行一些PHP代码,我得到了一些结果。事实上,当我试图通过AJAX从这个页面得到回复时,它会向我展示整个页面内容以及我正在寻找的结果。我该怎么做才能阻止页面写入额外的内容。我知道每当有什么东西打印在页面上它就会响应AJAX调用,但我想要一种方法来解决这个问题。

我的页面文件(名称:page.php):

<?php echo $Content->GetData('HEADER'); ?>
    <div id="Content">
      <div id="Page">
        <?php if($Content->GetData('PAGE','IS_TRUE')) : ?>
        <?php if(NULL !== $Content->GetData('PAGE','TITLE')) : ?>
        <?php echo $Content->GetPlugins("Page:" . $Content->GetData('PAGE','ID') . ",BeforeTitle"); ?>
        <div id="Title" dir="rtl">
          <a href="<?php echo $Content->GetInfo('ABS_ROOT') . "page/" . $Content->GetData('PAGE','NAME'); ?>"><?php echo $Content->GetData('PAGE','TITLE'); ?></a>
        </div>
        <?php echo $Content->GetPlugins("Page:" . $Content->GetData('PAGE','ID') . ",AfterTitle"); ?>
        <?php endif; ?>
        <div id="Content" dir="rtl">
          <div style="float: right; width: 966px; padding: 6px">
            <?php echo $Content->GetPlugins("Page:" . $Content->GetData('PAGE','ID') . ",BeforeContent"); ?>
            <?php echo $Content->GetData('PAGE','CONTENT'); ?>
            <?php echo $Content->GetPlugins("Page:" . $Content->GetData('PAGE','ID') . ",AfterContent"); ?>
          </div>
        </div>
        <?php else : ?>
        <div id="Content" dir="rtl">
          <div style="float: right; width: 966px; padding: 6px">
             There is no page like this in our archives.
          </div>
        </div>
        <?php endif; ?>
      </div>
    </div>
<?php echo $Content->GetData('FOOTER'); ?>

如果我在我的浏览器中写了一个地址localhost/cload/blog?action=rate,它将通过我的重定向列表并显示加载了blog插件的page.php。问题是我想通过这个地址通过AJAX调用我的blog插件,但它会首先呈现页面数据。

对不起,如果这很乱。

2 个答案:

答案 0 :(得分:1)

我建议将page.php修改为一些函数,主要是数据处理函数,然后是输出函数。然后,当您加载页面时,放置check in for whether it's an AJAX request,如果是,则将您想要的数据作为JSON回显,否则使用输出函数渲染页面。

或者,您可以创建第二个单独的页面,但这可能比单个文件更难维护。

答案 1 :(得分:0)

是的,您应该检查您的请求是否是ajax请求,如果是,那么您应该更改您的响应以仅返回任何想要的结果。

这个PHP代码会给出一个粗略的想法。

if($request->isXmlHttpRequest()){
  return new Response(json_encode($data_array));
}

希望这会有所帮助。