为什么我没有通过发送axios.put请求在服务器端接收数据

时间:2019-01-19 11:06:50

标签: php reactjs web-services axios

我在reactjs.Axios.get中使用Axios Api对我来说工作正常,但是我遇到axios.put问题,当我使用简单对象发送请求时,我会得到正确的响应,但是当我发送请求formdata时,我会得到响应为null。

当我发送带有正常工作的简单对象的请求时:

  const data= {ProductName:"Dummy"};
const apiurl = `http://localhost/testapi/index.php/api/products/product`;
axios.put(apiurl, data).then(response => {
  console.log(response.data);
});

服务器端:

 public function product_post()
{
    $data = array();
    $data['ProductName'] = $this->post('ProductName');
    $this->response(
        [
            'status' => "ok",
            'message' => "Data inserted successfully",
            'info' => $data['ProductName']
        ],
        REST_Controller::HTTP_OK
    );
}

我得到了“假人”的正确答案

当我使用无法正常工作的Formdata发送请求时:

  var data= new FormData();
data.set("ProductName","Dummy");
const apiurl = `http://localhost/testapi/index.php/api/products/product`;
await axios.put(apiurl, data).then(response => {
  console.log(response.data);
});

服务器端:

 public function product_post()
{
    $data = array();
    $data['ProductName'] = $this->post('ProductName');
    $this->response(
        [
            'status' => "ok",
            'message' => "Data inserted successfully",
            'info' => $data['ProductName']
        ],
        REST_Controller::HTTP_OK
    );
}

现在我收到的$ data ['ProductName']响应为null。 还有一件事,我也尝试发送带有formdata的文件,但是却为空

请告诉我代码有什么问题。

1 个答案:

答案 0 :(得分:0)

您需要使用append方法向FormData添加新键和值

更改

  data.set("ProductName","Dummy");

收件人

  data.append("ProductName","Dummy");

编辑:

您需要在标题中指定要发送的FormData,因为该内容类型应该是multipart / form-data。尝试以下代码

   var data= new FormData();
     data.append("ProductName","Dummy");
     const config = {     
         headers: { 'content-type': 'multipart/form-data' }
     }
     const apiurl = `http://localhost/testapi/index.php/api/products/product`;
    await axios.put(apiurl, data, config).then(response => {
       console.log(response.data);
    });