使用Vanilla Javascript发布到Php文件



我正在向PHP文件发布一个对象,问题是,我没有像我们在表单中那样使用name=",而是相反,我正在发布一个对象,看:

const done = async obj => {
console.log("sending JSON to PHP...");
await fetch("myFile.php",
{
method: "post",
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify(obj)
}
)
}
let obj = {
email: "ahmad@example.com",
message: "salam"
}
const send = async (obj)=>{
let response = await done(obj);
}
send(obj);

问题是,PHP 将如何解决已发布的参数?

这是我尝试过的:

$email = $_POST['email'];
$message = $_POST['message'];

但像往常一样,这是行不通的。

[编辑]:

额外的问题:以 JSON 格式发送 POSTED 数据是否重要?在使用获取 API 时执行此操作是否重要?

试试这样的事情

$body = file_get_contents('php://input');
$data = json_decode($body , true);
$email = $data['email'];
$message = $data['message'];

当你使用stringify时,你的php文件将收到你的json对象的字符串表示。因此,您必须使用 json_decode 将字符串转换为 php 对象。

$json = file_get_contents('php://input');
$data = json_decode($json);
$email = $data->email;

进一步澄清: 如果请求正文包含 JSON 的字符串表示形式,则内容类型标头将为文本/纯文本,即使内容类型设置为应用程序/json。因此,在 php 文件中,您必须首先读取正文中的原始文本file_get_content作为字符串并将其转换为 php json 对象。

最新更新