Как создать сообщение Async / await fetch?получение 500 внутренней ошибки сервера - PullRequest
0 голосов
/ 18 февраля 2019

Я успешно сделал запись извлечения в php api с помощью функции thisWorks (), но я пытаюсь использовать извлечение с помощью функции async / await post (), но я получаю ответное сообщение о внутренней ошибке 500 при попыткесделать это, что я не уверен, как отлаживать, так как мой код в моей асинхронной функции в основном такой же, как в thisWorks ().

вот две функции -

//I can make a succesful post to my api with this function and it returns a 200 ok response from the server

function thisWorks(title, message, author, id) {
    fetch("http://menu.com/menu/api/post/create.php", {
      method: "POST",
      headers: new Headers(),

      body: JSON.stringify({
        'title' : title,
        'body' : message,
        'author' : author,
        'category_id' : id
      })
    })
    .then( (response) => {
       console.log(response);
    });
}


//this gives a 500 internal server error and  TypeError: "NetworkError when attempting to fetch resource."

const post = async (title, message, author, id) => {

    const location = "http://menu.com/menu/api/post/create.php";

    const settings = {
        method: 'POST',
        headers: new Headers({
            'Accept' : 'application/json',
            'Content-Type': 'application/json'
        }),
        body: JSON.stringify({
            'title' : title,
            'body' : message,
            'author' : author,
            'category_id' : id
        })
    };

    try {
        const response = await fetch(location, settings);
        const json = await response.json();
        console.log(json);
        return json;
    } catch (error) {
        console.log(error);
        return error;
    }
}

ПередЯ получал ту же внутреннюю 500-ю ошибку сервера в thisWorks и errorLog на моем сервере apache были те же ошибки, которые я сейчас получаю в своей функции асинхронной публикации, которая выглядит так -

[Sun Feb 17 18:21:11.122109 2019] [php7:warn] [pid 890] [client 127.0.0.1:37548] PHP Warning: Header may not contain more than a single header, new line detected in /home/orpheus/Practice_dev/menu/api/post/create.php on line 7

[Sun Feb 17 18:21:11.122452 2019] [php7:notice] [pid 890] [client 127.0.0.1:37548] PHP Notice: Trying to get property 'title' of non-object in /home/orpheus/Practice_dev/menu/api/post/create.php on line 22

[Sun Feb 17 18:21:11.122471 2019] [php7:notice] [pid 890] [client 127.0.0.1:37548] PHP Notice: Trying to get property 'body' of non-object in /home/orpheus/Practice_dev/menu/api/post/create.php on line 23

[Sun Feb 17 18:21:11.122477 2019] [php7:notice] [pid 890] [client 127.0.0.1:37548] PHP Notice: Trying to get property 'author' of non-object in /home/orpheus/Practice_dev/menu/api/post/create.php on line 24

[Sun Feb 17 18:21:11.122482 2019] [php7:notice] [pid 890] [client 127.0.0.1:37548] PHP Notice: Trying to get property 'category_id' of non-object in /home/orpheus/Practice_dev/menu/api/post/create.php on line 25

[Sun Feb 17 18:21:11.122743 2019] [php7:error] [pid 890] [client 127.0.0.1:37548] PHP Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 1366 Incorrect integer value: '' for column 'category_id' at row 1 in /home/orpheu$

Проблема была не однав моем PHP-коде, но это было с моим запросом выборки, и я решил это, добавив новые Headers () к запросу, и это сработало.Так что я уверен, что проблема в некоторой ошибке при вызове асинхронной функции post (), но я не знаю, что изменить.

EDIT-

Это мои заголовки в create.php.Они принимают тип контента - application / json, поэтому я не уверен, почему я не могу добавить это в свои запросы ajax fetch, не получая ошибок

header('Access-Control-Allow-Origin: *');
  header('Content-Type: application/json');
  header('Access-Control-Allow-Methods: POST, OPTIONS');
  header("Access-Control-Max-Age: 3600");
  header('Access-Control-Allow-Headers: Access-Control-Allow-Headers,Content-Type,Access-Control-Allow-Methods, 
  Authorization, X-Requested-With, Content-Type, Authorization');

1 Ответ

0 голосов
/ 18 февраля 2019

Это было исправлено путем удаления «Accept»: «application / json», «Content-Type»: «application / json» из новых заголовков.Это то, что я принимаю в своих заголовках php, но каким-то образом это вызывает ошибку 500 внутреннего сервера при использовании в посте выборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...