получить тело от axios POST-запрос с Slim Framework - PullRequest
0 голосов
/ 10 сентября 2018

Привет Ребята, у меня проблемы с получением значения формы тела в тонких рамках 3.

На данный момент я пытаюсь использовать axios в моем переднем интерфейсе Reaction.js

это файл маршрута 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 !"]);
        }
    });

Я вижу, что данные вставлены успешно. но я получил тему задачи и детали задачи как ноль

это обработчик запросов post.js:

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));
    }

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 15 сентября 2018

Я считаю, что вам нужно передать body в data

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

...