使用 Slim Framework 从 axios POST 请求中获取正文

get body from axios POST Request with Slim Framework

大家好,我在 slim framework 3 中获取体型值时遇到了问题。

我现在尝试在我的 react.js 前端使用 axios

这是 slim3 路由文件: task.php

    <?php
    use Slim\Http\Request;
    use Slim\Http\Response;
    use \Firebase\JWT\JWT;

    $app->post('/task/add', function(Request $request,Response $response){

       // parse body
       $parsedBody = $request->getParsedBody();

       // data for insert
       $data = [
        ":TASK_STATUS" => 1,
        ":IDUSRN" => 1,
        ":TASK_FOR" => 16,
        ":TASK_DATE_START" => date('Y-m-d H:i:s'),
        ":TASK_DATE_END" => date('Y-m-d H:i:s'),
        ":TASK_SUBJECT" => $parsedBody['task_subject'],
        ":TASK_DETAIL" => $parsedBody['task_detail']
       ];


$sql = "INSERT INTO task (TASK_STATUS,IDUSRN,TASK_FOR,TASK_DATE_START,TASK_DATE_END,TASK_SUBJECT,TASK_DETAIL
        ) VALUES (:TASK_STATUS,:IDUSRN,:TASK_FOR,:TASK_DATE_START,:TASK_DATE_END,:TASK_SUBJECT,:TASK_DETAIL)";

        $stmt = $this->db->prepare($sql);

        try{
            $stmt->execute($data);
            return $response->withStatus(200)->withHeader("Content-Type", "application/json")->withJson(["status"=>"success","message"=>"Task successfully added !"]);

        }catch(PDOException $e){
            return $response->withStatus(401)->withHeader("Content-Type", "application/json")->withJson(["status"=>"Gagal","message"=>"Data tidak bisa terinput !"]);
        }
    });

可以看到数据插入成功了。但我收到的任务主题和任务详细信息为空

这是 react.js post 请求处理程序:

saveTask(e){
        e.preventDefault();

        const state = this.state;
        this.setState({
            addTask_status:false
        });

        const body = {                         
            task_subject: state.task_subject.value,
            task_detail: state.task_detail.value
        };

        axios({
          method: 'post',
          url: 'http://localhost:8080/task/add',
          headers:{
            "Content-Type": "application/json"
          },
          body
        }).then(function(response){
            console.log(response);
        })
        .catch((err)=>console.log(err));
    }

感谢您的帮助。

我认为您需要在 data

中通过 body
axios({ 
    method: 'post', 
    url: 'http://localhost:8080/task/add',
    headers:{
       "Content-Type": "application/json" 
    }, 
    data: body 
}).then(function(response) { 
    console.log(response);
});

Axios README.md