使用 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 数据重要吗?使用 fetch API 时这样做重要吗?


慕尼黑的夜晚无繁华
浏览 135回答 2
2回答

叮当猫咪

尝试这样的事情$body = file_get_contents('php://input');$data = json_decode($body , true);$email = $data['email'];$message = $data['message'];

哈士奇WWW

当您使用 stringify 时,您的 php 文件将收到 json 对象的字符串表示形式。所以你必须使用 json_decode 将字符串转换为 php 对象。$json = file_get_contents('php://input');$data = json_decode($json);$email = $data->email;进一步说明:如果请求正文包含 JSON 的字符串表示形式,则内容类型标头将为 text/plain,即使 Content-Type 设置为 application/json。因此,在 php 文件中,您必须首先使用 file_get_content 作为字符串读取正文中的原始文本,并将其转换为 php json 对象。
打开App,查看更多内容
随时随地看视频慕课网APP