[英]JSON POST from Javascript to PHP
我正在嘗試通過Javascript將JSON字符串發送到PHP腳本。 不幸的是它是空的。 我已經在Google和SO上檢查了一百個站點,但是找不到解決該問題的方法。 這是我在做什么:
我的HTML / Javascript:
<head>
<script type="text/javascript">
function button1_Click() {
var url = 'http://192.168.2.105/testpost.php';
var method = "POST";
var postData = {
"first": "John",
"last": "Doe"
};
var xhr = new XMLHttpRequest();
xhr.open( 'POST', url );
xhr.setRequestHeader( 'Content-Type', 'application/json' );
xhr.send( JSON.stringify(postData) );
}
</script>
</head>
<body>
<button id="button1" onclick="button1_Click()">Print</button>
</body>
而我的PHP:
<?php
ob_start();
var_dump($_REQUEST);
file_put_contents('test.txt', ob_get_contents());
ob_end_close();
?>
這就是我在test.txt中得到的:
array(0) {
}
我不知道為什么這是空的。 你能幫忙嗎?
編輯:感謝埃德加·維爾加斯·阿爾瓦拉德和昆汀
在HTML中,我更改了以下內容:
xhr.setRequestHeader( 'Content-Type', 'text/plain' );
然后在PHP中:
<?php
$json_data = json_decode($HTTP_RAW_POST_DATA);
ob_start();
echo $json_data->first;
file_put_contents('test.txt', ob_get_contents());
ob_end_close();
?>
最后我進入test.txt:
John
那就是我所需要的。
在這種情況下,您必須發送經過網址編碼的params。 所以代替這個:
xhr.send( JSON.stringify(postData) )
做這個:
xhr.send( "postData=" + encodeURIComponent(JSON.stringify(postData)) );
然后在php中閱讀:
$postData = json_decode($_POST['postData']);
編輯 ,哦,我看到您是作為application/json
發送的。 在這種情況下,您可以正確發送它,應該這樣閱讀:
$postData = json_decode($HTTP_RAW_POST_DATA);
$HTTP_RAW_POST_DATA
獲取請求的主體,正是您所需要的。 我希望它在您的php env中可用。 如果不是,則可以使用file_get_contents("php://input")
( info )。
希望這可以幫助。 干杯
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.