如果它不是ajax请求,则响应不同的html

时间:2015-10-25 15:41:01

标签: javascript php jquery html ajax

之前我问了这个问题,但我得到了几个负面分数,但这一次我要求它更清楚。

我在网站上有这个结构:

  • 主页(所有资源和脚本都在此页面中)
    • 所有其他页面(HTML只包含该特定页面的元素)

如果用户点击主页锚点到其他页面,嵌入到On click event的AJAX功能将运行,URL地址将使用Window.history.PushState更改。

问题是如果用户输入其他页面的URL而不是点击锚点,我们可以做什么?例如,如果用户输入:http://example.com/pages/about 那么只有该页面的元素才会加载,而不需要主页的资源和脚本。

我想解决这样的问题:

  1. 检测用户是否输入了网址而不是点击锚点。(检测HTTP请求)
  2. 如果是HTTP请求,请加载主页中包含的资源。
  3. 此解决方案可以采用客户端(javascript)方式吗?我也知道一点PHP。

    看看Cloudflare面板,看看我的意思:https://www.cloudflare.com/a/overview

1 个答案:

答案 0 :(得分:0)

我做了一些研究(感谢评论),这是我的首选解决方案。我不想改变标记,所以模板引擎不是我的选择。

1.将此PHP脚本保存在PHP文件中。

<?php

/* Detect AJAX */

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
    /* If it is AJAX do this */
}

else {
/* If it is not AJAX do this; In my case I did echo all scripts and resources that I wanted to be in AJAX addresses */
    echo '
        <script src="example.js"></script>
    ';
}

2.在具有AJAX和HTTP请求的页面中的PHP脚本文件之上的链接。在我的情况下,我把它放在所有其他页面而不是主页。

<?php include "../script.php"; ?>

3.配置您的网络服务器以支持HTML文件扩展名中的PHP脚本。我的网络服务器是Apache,所以我在.htaccess文件中写了这行。

AddType application/x-httpd-php .htm .html