我有一個中央 PHP 腳本,用于處理來自我的頁面的許多請求,使用來自 JavaScript 的 XMLHttpRequest() 調(diào)用,使用 GET 方法。我的服務(wù)器 PHP 目前是 5.6,是的,我正在避免同步調(diào)用。一切都很好,但是在某些情況下,我不希望請求保留在瀏覽器歷史記錄中,甚至不顯示在 URL 中。所以基于這個調(diào)用的MDN 參考,我想我可以簡單地切換到 POST 方法,保留我現(xiàn)有的請求(例如“ http://myscript.php?cmd=dothis&data=somedata ”)。那么我所要做的就是在我的 PHP 腳本中添加一些代碼,這樣我就可以以任何一種方式收集傳遞的數(shù)據(jù)......if ($_SERVER['REQUEST_METHOD'] === 'GET') { if(isset($_GET['cmd'])) $cmd = $_GET['cmd']; if(isset($_GET['data'])) $data = $_GET['data']; }if ($_SERVER['REQUEST_METHOD'] === 'POST') { if(isset($_POST['cmd'])) $cmd = $_POST['cmd']; if(isset($_POST['data'])) $data = $_POST['data']; }嗯,顯然我錯了。我發(fā)現(xiàn)的是...當(dāng)我切換到 POST 方法時,$_POST 數(shù)組中的腳本看不到此示例中顯示的任何變量。從 $_POST 數(shù)組切換到 $_REQUEST 數(shù)組工作正常(例如:“if(isset($_REQUEST['cmd'])) $cmd = $_REQUEST['cmd']);” ), 但....只是使用 POST 方法發(fā)出我的 XMLHttpRequest() 調(diào)用的行為會導(dǎo)致我的日志中出現(xiàn)這樣的錯誤:PHP 棄用:自動填充 $HTTP_RAW_POST_DATA 已棄用,將在未來版本中刪除。為避免此警告,請在 php.ini 中將 'always_populate_raw_post_data' 設(shè)置為 '-1' 并改用 php://input 流。在未知的第 0 行所以顯然這是一個死胡同。盡我最大的努力研究這里發(fā)生的事情,在PHP 手冊中對 POST 的參考中,我在上面讀到了這個……$_POST $HTTP_POST_VARS [已棄用]因此,如果我正確理解這一點,我只能使用 $_REQUEST 數(shù)組獲取 POST 變量的原因是因為我的請求仍然被格式化,就好像我仍在使用 GET 一樣,這(顯然?)是一種不推薦使用的方法。因此,“哄”它工作只是將問題移到未來。順便說一句,我可以通過調(diào)用服務(wù)器上的 phpinfo.php 看到,盡管我在日志中看到了錯誤,但“always_populate_raw_post_data”確實已經(jīng)設(shè)置為“-1”。因此,我發(fā)現(xiàn)的所有“解決方案”都建議我“只是”在我的 PHP.INI 文件中進行此設(shè)置,但都無濟于事。即使它確實“隱藏”了錯誤,這樣做似乎與我無關(guān)。我說即使我在使用 POST 方法時簡單地從 $_REQUEST 數(shù)組中收集我傳遞的 PHP 變量,并找出一種方法來抑制我的日志中的“已棄用”警告,整個方案仍然會崩潰(并讓我的 POST 請求失?。?,我最終遷移到 PHP 7.x 的那一天?我很抱歉在這里提問,但我真的嘗試搜索我能找到的所有參考資料,以使用 POST 方法執(zhí)行 XMLHttpRequests,以及我在日志中收到的已棄用的錯誤消息。那里有太多過時的信息,我找不到關(guān)于如何正確更改或重新格式化我的 XMLHttpRequests 以便我可以使用 POST 方法的任何明確討論。事實上,我什至不能肯定地確定在 PHP.5.6 之后是否可以這樣做。任何幫助將不勝感激。
您如何將 XMLHttpRequest 與 POST 方法一起使用?
慕田峪4524236
2021-09-18 17:19:33