在我网站上的网页(100多个不同的页面)上,我有以下代码来加载和使用Ajax和jQuery请求页面。调用此内容的示例页面网址为products.php
和faqs.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
答案 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。
我希望这会有所帮助...... 我没有测试代码,但我认为这应该可以解决问题......