2012-11-26 50 views
2

我正在開發一個簡單的鏈接,它將啓動一個ajax調用。直到我們的Ubuntu服務器退役爲止,這一切都按預期工作;我們有一個新的「相同」的服務器。當我檢查POST中的內容時,問題發生在服務器端。 的$ _ POST預期回聲[「scan_date」]是:2012年11月26日PHP Post變量具有重複的,消耗的數據

實際回聲:2012-11-26scan_date = 2012年11月26日

而且這是在PHP的實際回聲代碼如下。 客戶端警報給出了這個:2012-11-26這就是我所期望的。 所以,似乎在服務器端發生了一些事情。我期望回聲是「2012年11月26日」,而不是「2012-11-26scan_date = 2012-11-26」

我不明白爲什麼POST數據是這樣變得越來越大。

PHP:

$date = isset($_POST["scan_date"]) ? $_POST["scan_date"] : date("Y-m-d"); 
echo $date; //produces 2012-11-26scan_date=2012-11-26 which is bad 

JQuery的:

var val = $(this).attr('value'); 
dateSelected = val.replace(/facterOption-/g, ""); 
dateSelected = $.trim(dateSelected); 
alert(dateSelected); //alerts 2012-11-26 which is good 

$.ajax({ 
type: "POST", 
dataType: 'json', 
url: 'https://someurl', 
data: { 
scan_date: dateSelected 
} 
}) 

UPDATE:我們已嘗試是完全爲這個PHP項目的代碼框架之外的命令行卷曲電話,相同的結果將是注意到。所以也許Apache與此有關。

此外,我們發現添加第二個POST參數和值處理此問題。

+0

爲什麼不使用$ .post而不是$ .ajax?它肯定不會解決你的問題,但「更容易理解和使用」http://docs.jquery.com/Ajax/jQuery.ajax –

+1

echo file_get_contents('php:// input')'說什麼?這基本上是PHP在將其解碼爲'$ _POST'之前接收到的。 –

+0

傑克,這很有趣,這裏是我從你的建議中得到的: scan_date = 2012-11-09scan_date = 2012-11-09 – user1082428

回答

1

這是一個現有的錯誤。

https://bugs.php.net/bug.php?id=22773

解決辦法是:

  • 發送另一個虛擬名稱/值對進入後
  • 要求> IE6
  • 使用GET而不是POST(如果適用)
+0

試過了,不幸的是它也給出了相同的輸出。 – user1082428

+0

然後它defintely你通過ajax發送。你有沒有試過看通過螢火蟲或鍍鉻控制檯發佈的內容。 – KingKongFrog

+0

參數應用/ x-www-form-urlencoded scan_date \t 2012-11-15 – user1082428

1

在您的PHP文件中,嘗試更改:

echo $date; 

echo $_POST["scan_date"]; 

只是爲了看看PHP文件被接收。

+0

當我直接回顯POST數據時,我得到了相同的輸出。 – user1082428