PHP - 使用Ajax / jQuery加载页面 - 获取母版页的URL

时间:2016-04-27 14:03:32

标签: php jquery ajax url path

在我网站上的网页(100多个不同的页面)上,我有以下代码来加载和使用Ajax和jQuery请求页面。调用此内容的示例页面网址为products.phpfaqs.php

jQuery( document ).ready(function() {
    new Ajax.Request('dynamic-page.php', {
        method: 'POST',
        requestHeaders: { Accept: 'application/json' },
        onSuccess:function(transport) {
            var response = transport.responseText.evalJSON(true);
            // do something with response
        }.bind(this)
    });
});

现在我的dynamic-page.php我有几个条件语句,其中一个需要知道调用它的页面是什么。

在dynamic-page.php中我可以得到路径:

$path = "http://" . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'];

可以理解的是,这给了我动态页面的网址(即http:www.website.com/dynamic-page.php

我的问题是在我的动态页面中,是否可以获取使用PHP调用的主父/页面的URL /路径?我需要在动态页面中知道用户所在的网页是products.php还是faqs.php

2 个答案:

答案 0 :(得分:0)

如果您通过AJAX请求页面,它将被视为一个单独的请求,因此我无法看到服务器端如何在没有额外信息的情况下知道。但是,由于您是通过POST请求请求页面,因此我可以想到的最明显的事情是在发出AJAX请求时将页面名称放在POST变量中。然后,您请求的页面可以使用该信息来了解所请求的上下文。

答案 1 :(得分:0)

您可能希望尝试将当前页面的URL作为参数发送到Ajax调用。尝试这样的事情,而不是:

jQuery( document ).ready(function() {
new Ajax.Request('dynamic-page.php', {
    method: 'POST',
    requestHeaders: { Accept: 'application/json' },
    parameters: {url: window.location.href},    //the URL of the Current Page incl. query strings
    onSuccess:function(transport) {
        var response = transport.responseText.evalJSON(true);
        // do something with response
    }.bind(this)
});

});

在端点PHP文件(" dynamic-page.php" - 在这种情况下),您可能会这样做:

<?php
    $originationURL = (isset($_POST['url']) && !empty($_POST['url'])) ? $_POST['url'] : "a-default-page.php";
    //Do whatever you wish with the *$originationURL* variable...
?>

如果您使用AJAX通话发布其他数据(例如表单数据);确保没有任何参数被命名为url。

我希望这会有所帮助...... 我没有测试代码,但我认为这应该可以解决问题......