Почему я не получаю данные на стороне сервера, отправляя запрос axios.put - PullRequest
0 голосов
/ 19 января 2019

Я использую Axios Api вactjs.Axios.get работает нормально для меня, но я сталкиваюсь с проблемой с axios.put, когда я отправляю запрос с простым объектом, я получаю правильный ответ, но когда я отправляю запрос формы, я получаюноль в ответе.

Когда я отправляю запрос с простым объектом, который работает нормально:

  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'] нулевой.Еще одна вещь, которую я также пытался отправить файл с formdata, но получил null

Пожалуйста, скажите мне, что не так с кодом.

1 Ответ

0 голосов
/ 19 января 2019

Вам необходимо использовать метод добавления, чтобы добавить новый ключ и значение в 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);
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...