我很猶豫要問,但到目前爲止我還沒有找到任何解決方案。我一直認爲,這可能只是一個愚蠢的錯誤,但我找不到它。jQuery ajax post:PHP get的沒有內容
我有一個jQuery 2.1 AJAX的POST到我的PHP服務器:
$.ajax({
url: "http://my-server.com/post-example.php",
type: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: JSON.stringify({ foo: "bar" }),
success: function(data) {
console.log("SUCCESS");
},
});
Safari瀏覽器告訴我,在控制檯中,該請求的數據是正確的,並已發送。當試圖訪問foo
內PHP,一切都是空的:
var_dump($_POST); // array(0)
$foo = file_get_contents("php://input");
var_dump($foo); // string(0)
當我試着使用捲曲文章中,我得到的結果在php://input
:
curl -v -X POST -H "Content-Type: application/json" -d '{"foot":"bar"}' http://www.my-server.de/post-example.php
// on PHP side
var_dump($_POST); // array(0)
$foo = file_get_contents("php://input");
var_dump($foo); // string(13) "{"foo":"bar"}"
我找不到一個原因。也許我的PHP配置有問題,但我已將always_populate_raw_post_data = On
設置在我的php.ini
中。
我也試過沒有contentType
和dataType
,效果一樣。
不是同樣的問題? http://stackoverflow.com/questions/298745/how-do-i-send-a-cross-domain-post-request-via-javascript – Nostalgie
不幸的是沒有。我可以到達服務器,並且每次都返回輸出,但來自PHP的請求變量是空的。 – 23tux
嗯爲什麼stringify?你可以發佈數據:{foo:「bar」},不知道它是否會有所作爲。 – Esko