Axios выдает ошибку «внутренний сервер 500»

#javascript #reactjs

Вопрос:

Так. Я пытался исправить ошибку в своем веб-приложении. Когда отправляется запрос axios POST, данные сохраняются через несколько мгновений. Также я сузил это до причины, по которой API выдает «500 (внутренняя ошибка сервера)», но каким-то образом данные все равно обновляются (через несколько секунд).

Мой код до сих пор выглядит так:

     changeStatus() {
        const { match: { params } } = this.props;

        let assigned = this.state.projres amp;amp; this.state.projres.assign
        let fd = new FormData();
        fd.append("projectId", params.pid);
        fd.append("status", "Completed");
        fd.append("assignedToId", assigned);
        axios({
            method: 'post',
            url: `${url}/project/accepted`,
            data: fd,
        })
        .then((response) => {console.log("here is the resp"   fd)},(error) => {console.log("Error for it is"   error)})
           .then(this.props.actions.getDetails(params.pid)
            ).then(console.log("Here it all ends!"))}
 

В моей консоли данные, которые я получаю, находятся в последовательности, подобной

 Here it all ends!
 
 POST http://localhost:8000/project/accepted 500 (Internal Server Error)
 
 here is the resp[object FormData]
 

Приведенный выше консольный ответ также кажется странным, поскольку он не делает .тогда() полезно.

Пожалуйста, помогите, в чем может быть возможная ошибка в коде? PS: Я много раз проверял другие API и форму данных post, все они правильные. Также пробовал в Почтальоне, там тоже неплохо работает.

Комментарии:

1. .then(this.props.actions.getDetails(params.pid)) будет немедленно звонить this.props.actions.getDetails(params.pid) вместо того, чтобы назначать его в качестве обратного вызова после того, как обещание будет выполнено. То же самое с .then(console.log("Here it all ends!")) — значение регистрируется немедленно, и вы назначаете результат console.log (который просто undefined ) в качестве .then() обработчика. Который ничего не делает.

2. Ладно, понял. Но как преодолеть эту проблему? Как я могу заставить .then(this.props.actions.getDetails(params.pid)) ждать, пока данные не будут загружены? С условием «если» может быть?

3. .then(() => this.props.actions.getDetails(params.pid)

4. К сожалению, это не помогло! По-прежнему выдает ошибку «500»: (

5. Это ошибка сервера. Вы вряд ли повлияете на это, изменив код на стороне клиента. Особенно это невозможно, если вы измените обработчики на момент завершения запроса . Это не повлияет на запрос по определению.