Php

通過 AJAX 請求 POST 失敗?

  • September 6, 2010

我一生都無法弄清楚為什麼會這樣。

這是一種轉發(送出給stackoverflow,但可能是伺服器問題?)。

我正在執行一個名為 logOut() 的 javascript 註銷函式,該函式對 php 腳本進行了 jQuery ajax 呼叫…

function logOut(){
   var data = new Object;
   data.log_out = true;
   $.ajax({
       type: 'POST',
       url: 'http://www.mydomain.com/functions.php', 
       data: data,
       success: function() {
            alert('done');
       }
   });
}

它呼叫的php函式在這裡:

if(isset($_POST['log_out'])){ 
   $query = "INSERT INTO `token_manager` (`ip_address`) VALUES('logOutSuccess')"; 
   $connection->runQuery($query); // <-- my own database class...
   // omitted code that clears session etc...
   die();
}

現在,每天 18 小時都可以使用,但由於某種原因,每隔一段時間,POST 數據都不會觸發我的查詢。(這將持續大約一個小時左右)。我發現沒有通過在我的腳本末尾添加這個來設置文章數據……

$query = "INSERT INTO `token_manager` (`ip_address`) VALUES('POST FAIL')"; 
$connection->runQuery($query);

所以,現在我確定我的註銷功能被跳過了,因為在我的數據庫中有以下數據:

替代文字

如果沒有被跳過,我的數據將顯示如下:

替代文字

我知道它被跳過有兩個原因,一個是我的第一個函式末尾的 die(),另一個是,如果它成功,則會在表中註冊“logOutSuccess”。

有什麼想法嗎?一位朋友說這是一家簡陋的託管公司(hostgator.com)。我個人喜歡它們,因為它們很便宜,而且我是 cpanel 的粉絲。但是,如果是這樣???

提前致謝。

-J

這是唯一呼叫functions.php的腳本嗎?

不要只記錄“POST FAIL”,而是嘗試記錄 print_r( $ _POST, true) and maybe $ _伺服器

$$ ‘HTTP_REFERER’ $$. 這可能會告訴您失敗的呼叫來自哪裡。

嘗試使用 HTTP 嗅探器首先確定問題是您的 PHP 腳本還是 AJAX 程式碼。或者它可能是您不知道的客戶端條件。它可能根本不是您的 AJAX 程式碼。嗅探器將有助於消除它是否絕對是客戶端問題。

引用自:https://serverfault.com/questions/143548