2016-04-27 176 views
0

在我的网站上(100多个不同页面)上,我使用以下代码来使用Ajax和jQuery加载和请求页面。调用这样的一个例子网址为products.phpfaqs.phpPHP - 使用Ajax/jQuery加载页面 - 获取主页面的URL

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

在动态page.php文件,我可以得到的路径:

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

可以理解这让我对动态页面的URL(即http:www.website.com/dynamic-page.php

我的问题是我的动态页面内,是否有可能获得使用PHP调用的主父/页面的URL /路径?我需要知道在我的动态页面中用户所在的页面是否为products.phpfaqs.php

回答

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文件(“动态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。

我希望这可以帮助... 我没有测试代码,但我认为这应该做的伎俩...

0

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