2013-03-19 61 views
0

我通過jQuery張貼到一個PHP腳本:jQuery POST響應好的,但PHP腳本不會POST?

$.post('http://*****.php', {'clicked':'true'}, 'json'); 

在後的數據來看,它會迴應:

在頭
Request URL:http://*****.php 
Request Method:POST 
Status Code:200 OK 

表單數據是這樣的:

clicked:true 

當我嘗試通過我的PHP腳本檢索POST數據時:

var_dump($_POST); 

我得到一個空數組:

array(0) { } 

然而,在命令行中玩耍的時候,我可以成功地查看從響應後的數據,當我做:

wget --post-data 'clicked=true' http://****.php 

成功響應與wget的是:

array(1) { 
    ["name"]=> 
    string(4) "test" 
} 

我一直無法弄清楚......這不是我的.htaccess文件。另外,GET請求也可以正常工作。我假設我的jQuery POST是錯誤的,但不知道它可能是什麼 - 它直接來自jQuery文檔。

+0

在什麼時候,你試圖做VAR轉儲? – philipobenito 2013-03-19 15:55:31

+0

你看過'php:// input'嗎? – jmeas 2013-03-19 15:55:34

+0

var轉儲位於腳本的最頂端。我如何看待'php:// input'? – mdance 2013-03-19 15:57:16

回答

3

當POST數據作爲JSON字符串發送時,$_POST將不會顯示數據。要訪問它,您必須使用php://input

$phpinput = file_get_contents("php://input"); 
if(!$phpinput) { 
    //No data was sent 
} 
else { 
    //Do something with yo data 
} 

本作的技術細節,check out this great answer貢獻在下面的意見之一。

+0

編輯:工作。爲什麼? – mdance 2013-03-19 15:59:13

+0

[這個相關答案](http://stackoverflow.com/a/8893792/122353)可以解釋它爲什麼起作用。它看起來像jQuery發送未規範化的數據到查詢字符串,而是作爲一個JSON字符串。 PHP無法理解這一點,所以它不會被分析到'$ _POST'中。 – 2013-03-19 16:02:10

+0

這似乎是問題所在。謝謝。 – mdance 2013-03-19 16:06:55

0

使用RAW $就不是

$.ajax({

url : 'http://*.php', data : {'clicked':'true'}, dataType : 'json', method : 'post'

});