[英]How to receive Fetch() POST in php?
所以我在这里得到了这个 POST json 方法,但不明白如何获取我的 json 数据
它被包装在 BLOB 中,而 BLOB 被包装在 FormData 中
如何在 php 中接收此类 POST? (并将此 FormData(Blob) 转换回 json?)
JS
const data = new FormData();
const jsonBlob = new Blob([JSON.stringify(myJSON)], {type: "application/json"});
data.append("data", jsonBlob);
fetch(website,{
method: "POST",
body: data,
}).then(resp=>{
if(!resp.ok){
const err = new Error("Error response");
err.resp = resp;
throw err;
}
console.log("OK");
}).catch(err =>{
console.error(err);
})
我是大菜鸟,所以我什至无法收到它
似乎它与fetch()
的工作方式不同
PHP
if(isset($_POST['data'])){
}
将 JSON 发送到服务器的最简单方法是将其作为 POST 请求正文发送。 无需像文件一样包装它。 例如,
var myJSON = {
hello: 'world',
foo: 'bar',
};
fetch(website, {
method: "POST",
body: JSON.stringify(myJSON),
})
在服务器端,您的消息将通过“php://input” stream 读取。 您可以像阅读普通文件一样阅读它:
$request_raw = file_get_contents('php://input');
$json_object = json_decode($request_raw);
您可以将以下代码保存为 PHP 文件并自行测试。 加载时,它会向自己发送另一个 POST 请求,将其解析为键值对,将其返回到浏览器并显示:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$request_raw = file_get_contents('php://input');
$request = json_decode($request_raw);
foreach ($request as $key => $value) {
echo "{$key}: {$value}\n";
}
exit;
}
?>
<div id="result"></div>
<script>
var myJSON = {
hello: 'world',
foo: 'bar',
};
const data = new FormData();
fetch(document.location.href, {
method: "POST",
body: JSON.stringify(myJSON),
}).then(resp => {
if(!resp.ok){
const err = new Error("Error response");
err.resp = resp;
throw err;
}
console.log("OK");
return resp.text();
}).catch(err =>{
console.error(err);
}).then(body => {
document.getElementById('result').innerText = body;
});
</script>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.