首页 > 解决方案 > Fetch API 发送空的 post 数组

问题描述

我想使用方法将从html表单获取的所有数据发送到php脚本POST

我的 HTML:

<form id="details" class="form">

    Full name: <strong name="name_1">ABCDEF</strong><br><br>
    ID No:<strong name="org_number_1">23</strong><br><br>
    Mobile No:<strong name="ph_number_1">1234567890</strong><br><br>

    E-mail: <strong name="email_1">abc@def.com</strong><br><br>
    ID Card: <img src="profile.jpg" alt="preview" name="image" style="width: 100px; height: 100px;"><br><br>

    <button id="go" onclick="submit()"type="button" value="submit">Submit</button>

</form>

我的JavaScript:

function submit(){

    var nme=document.getElementsByName("name_1")[0].innerHTML;
    var id=document.getElementsByName("org_number_1")[0].innerHTML;
    var phone=document.getElementsByName("ph_number_1")[0].innerHTML;
    var email=document.getElementsByName("email_1")[0].innerHTML;
    var img=document.getElementsByName("image")[0].src;

    const dForm = document.getElementById('details');          
    dForm.addEventListener('submit', function(e) {
        e.preventDefault();
        const formData=new FormData();
        formData.append('name', nme);
        formData.append('email', email);
        formData.append('ID No', id);
        formData.append('Contact no', phone);
        formData.append('image', img);
        fetch("database_registration.php",{
            method: 'post',
            body: formData, 
            headers: {
            'Accept': 'application/json',
            'Content-Type': 'application/json'
            },
        }).then(function (response){
            return response.text();
        }).then(function (text){
            console.log(text);
        }).catch(function (error){
            console.error(error);
        })
    });
 
}

我的PHP:

<?php
     $post_data=file_get_contents("php://input");
     var_dump($_POST); //shows array(0) { }
     print_r($_POST);//shows Array()
     $data=json_decode($post_data); 
     echo $data; //shows a completely blank page
?>

为什么我的$_POST数组是空的?

标签: javascriptphphtmlfetch

解决方案


它实际上是原始的帖子数据。您无法使用该$_POST变量接收数据。你必须使用

$payload = file_get_contents('php://input');
$data = json_decode($payload);
print_r($data);

注意:有时您必须无缘无故地重新启动服务器。:)

已经在这里回答了


推荐阅读