使用 Vanilla Javascript 发布到 Php 文件 [重复]
Posted
技术标签:
【中文标题】使用 Vanilla Javascript 发布到 Php 文件 [重复]【英文标题】:Post to Php file using Vanilla Javascript [duplicate] 【发布时间】:2020-10-19 01:52:13 【问题描述】:我正在向 php 文件发布一个 OBJECT,问题是,我没有像在表单中那样使用 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 数据重要吗?在使用 fetch API 时这样做重要吗?
【问题讨论】:
请不要用Jquery回复 【参考方案1】:试试这样的
$body = file_get_contents('php://input');
$data = json_decode($body , true);
$email = $data['email'];
$message = $data['message'];
【讨论】:
我无法理解?你能帮我解释一下吗? 我已经更新了答案,我不知道如何让它更简单【参考方案2】:当您使用 stringify 时,您的 php 文件将收到您的 json 对象的字符串表示形式。因此,您将不得不使用 json_decode 将字符串转换为 php 对象。
$json = file_get_contents('php://input');
$data = json_decode($json);
$email = $data->email;
进一步说明: 如果请求正文包含 JSON 的字符串表示,则 content-type 标头将为 text/plain,即使 Content-Type 设置为 application/json。因此,在 php 文件中,您必须首先以 file_get_content 作为字符串读取正文中的原始文本,然后将其转换为 php json 对象。
【讨论】:
我尝试过这样做:$email = json_decode($_POST['email']); $message = json_decode($_POST['message']);但它没有用。 我该怎么办? 我收到此错误 第一行从请求体中获取原始数据。 如何设置请求正文请参见此处参考developer.mozilla.org/en-US/docs/Web/API/Request/…以上是关于使用 Vanilla Javascript 发布到 Php 文件 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 vanilla javascript 通过 ajax 将多张照片上传到 Laravel 应用程序?
将对象列表打印为 vanilla javascript 中的链接
javascript JQuery到Vanilla js指南
将数据从 vanilla Javascript 传递到 React 的最佳方式? [关闭]