這裏是我試過:jQuery的 - 阿賈克斯提交JSON數據GET
JS:
$.ajax({
type: 'GET',
contentType: 'application/json; charset=UTF-8',
data: JSON.stringify({ data: 'bla' }),
dataType: 'json',
success: function(data) {
alert(data);
},
error: function(data) {
alert('error: ' + data);
}
});
PHP:
<?php
if ($_SERVER['REQUEST_METHOD'] == 'GET')
{
$data = json_decode(file_get_contents('php://input'));
echo json_encode($data);
}
?>
輸出:
null
如果交換GET與POST,而不是它的工作原理就像一個魅力。 「爲什麼不直接使用POST?」,我使用POST來執行插入數據庫。我有一種暗示的感覺,可能是因爲它強制需要這種格式的GET數據:[email protected]&firstname=Bob&lastname=Mctest
。我不知道爲什麼,因爲內容類型設置爲application/json,這有點令人困惑。只是爲了在我的最後一次編輯中添加一些內容,php://input
是空的,換句話說,它不向它發送任何數據,但它仍然可以在終端使用curl GET的情況下正常工作。
當我運行使用它就像一個魅力和吐出沒有問題的數據即curl -v -X GET -H "Content-Type: application/json" -d '{"data":"bla"}' http://codes.local/test.php
我不知道多大的幫助,這將是,但我發現了JSON內容類型的終端的捲曲GET命令一個PHP小提琴網站,並粘貼示例代碼,以方便大家,這裏是鏈接:http://phpfiddle.org/main/code/u4b-xkh
非常感謝您的任何幫助。
編輯:修正了「應用/ JSON的」拼寫錯誤所指出的SilverBlade並更新了PHP小提琴鏈接(空輸出仍然存在,換句話說仍然沒有工作)。我應該在上面說明的問題是php://input
實際上是空的,當通過jQuery發佈時沒有任何數據 - 與curl GET結合使用時沒有問題。
編輯2:我沒有使用IIS,感謝羅伯特丹尼羅(heh)指出了它。
嗨SilverBlade感謝您的回覆。我修復了這個錯字,並更新了PHP小提琴和其他所有內容,對於那裏的尷尬錯誤感到抱歉,我正在複製粘貼我的代碼的簡化版本,因此更容易通過。僅供參考,如果將網址發佈到自己,則無需指定URL。 – adamj