2017-09-13 54 views
0

我有一個php頁面(client.php)包含以下腳本。該腳本執行ajax調用。一旦成功,它會執行另一個Ajax調用。我遇到了第二個Ajax調用,它返回request_uri作爲「sql/adminloademail.php」而不是「/client.php」的父路徑。如何告訴php回顯出現在當前窗口URL中的父路徑「/client.php」?從ajax調用中的父URL(當前窗口URL)獲取路徑在另一個ajax調用中打環

SCRIPT

$.ajax({ 
    method:'POST', 
    url:'sql/adminaddclient.php', 
    data:formData, 
    contentType: false, 
    processData: false, 
    success: function(data){ 
    $.ajax({ 
     type:'POST', 
     url:'sql/adminloademail.php', 
     success: function(data){ 
     $('#account_list').html(data); 
     } 
    }); 
    } 
}); 

PHP(adminloademail.php)

$page = parse_url(filter_input(INPUT_SERVER, 'REQUEST_URI' , FILTER_SANITIZE_STRING), PHP_URL_PATH); 
echo $page; 
+0

你不是很清楚這裏,域之後的部分不是'/ client.php',但是'/ admin - 添加 - client.php',這些都是連字符? – adeneo

+0

adeneo請參閱我的更改以獲得進一步的說明。 – ninjachuku

回答

0

可以父URL設置爲一個變量,然後與數據PARAM發送。

var parentUrl = window.location.href; 

$.ajax({ 
    type:'POST', 
    url:'sql/adminaddclient.php', 
    data:formData, 
    contentType: false, 
    processData: false, 
    success: function(data){ 
    $.ajax({ 
     type:'POST', 
     data:{"parentUrl":parentUrl}, 
     url:'sql/adminloademail.php', 
     success: function(data){ 
     $('#account_list').html(data); 
     } 
    }); 
    } 
}); 

你也可以嘗試從頭文件中獲取它。

$headers = apache_request_headers(); 
if (isset($headers['Referer'])) { 
    echo "Referer: " . $headers['Referer']; 
} 

由於PHP 5.4.0 apache_request_headers也可在FastCGI下獲得。

由於PHP 5.5.7 apache_request_headers也可在CLI服務器中使用。

http://php.net/manual/en/function.apache-request-headers.php

+0

謝謝!這工作。但有沒有辦法用純PHP做到這一點?這似乎很奇怪,這是2017年的PHP限制之一。 – ninjachuku

+0

@ninjachuku您可以嘗試檢查Referer。我已經更新了答案。 – Talgat

+0

不幸的是,$ headers ['Referer']不起作用。 – ninjachuku