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


PHP - Loaded Page with Ajax/jQuery - Get URL of master page

在我的网页(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中,我有几个条件语句,其中一个需要知道调用它的页面是什么。

在动态页面中.php我可以获取路径:

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

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

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

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

您可能希望尝试将当前页面的 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文件("动态页面.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。

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