[英]Get current page name with PHP and jQuery AJAX
我想登錄網站的訪問者的引薦和登陸頁面。 基本設置如下:
在我的index.html
文件中,包括我的JavaScript文件: <script src="js/log.js"></script>
。 在這里,我使用AJAX調用PHP文件來獲取引薦來源網址和登錄頁面,如下所示:
$.ajax({
type: "post",
url: 'php/functions.php',
data: 'request_type=get_page_info',
success: function (data) {
console.log('DATA: '+data);
}
});
在我的PHP functions.php
文件中,我返回參照頁面和登錄頁面,如下所示:
if( isset($_POST['request_type']) && $_POST['request_type'] == 'get_page_info'){
echo 'The referer is: '.$_SERVER['HTTP_REFERER'].' and
the landing page is: '.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
}
一切都相當簡單。 假設我是從stackoverflow.com來到此站點的,我希望AJAX成功函數中的數據如下所示:
引薦來源網址為:www.stackoverflow.com,登錄頁面為:www.mysite.com/index.html
但是,相反,我得到這個:
引薦來源網址為:www.mysite.com/index.html,目標網頁為:www.mysite.com/php/functions.php
我在哪里錯呢?
提前致謝。
UPDATE
我之所以嘗試這種方法,是因為這個小例子是一個較大的項目的一部分,該項目旨在作為某種插件。 為了使用戶易於集成到他們的網站中,我希望他們能夠僅在頁面標題中包含javascript文件,僅此而已。 因此,將index.html
更改為index.php
並僅添加php代碼的選擇實際上並不是我要找的方法。
您正在回顯ajax調用本身的引用者,而不是您的登錄頁面。 由於HTTP是無狀態的,因此您無法通過Ajax調用獲得這些信息而不將它們存儲在某個地方,因此您需要將以下代碼放在www.mysite.com/index.html
並擺脫ajax調用:
<?php
if( isset($_POST['request_type']) && $_POST['request_type'] == 'get_page_info'){
echo 'The referer is: '.$_SERVER['HTTP_REFERER'].' and the landing page is: '.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
}
?>
您可以使用javascript訪問當前頁面引薦來源網址:
document.referrer
這是為了防止您的主頁不使用php。 如果您使用的是php,則可以在頁面加載時捕獲它。
引薦來源網址(如果受支持)通常是調用相關頁面的頁面。 在您的情況下,您的functions.php
是通過index.php
(通過AJAX)調用的,因此,您的引薦來源網址為index.php
而自己的網頁則為functions.php
。 從服務器的角度來看,請求的不是一頁,而是兩個單獨的頁面-它對AJAX或任何其他請求頁面的方法一無所知。
您想要做的完全不需要任何ajax-您所需要做的就是將代碼用於將引薦來源網址放入主index.php
文件中。 如果(出於任何奇怪的原因)您需要在javascript中使用此信息,則可以從php文件中生成javascript:
if( isset($_POST['request_type']) && $_POST['request_type'] == 'get_page_info'){
echo "<script type='text/javascript'>\n;
echo " var referer = '" . $_SERVER['HTTP_REFERER'] . ";\n";
echo " var landing = '" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'] . ";\n";
echo "</script>\n";
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.