Почему не отправляется запрос на сервер?

156
07 июня 2018, 16:40

Есть небольшое приложение на React, функционал: регистрация новых пользователей и восстановление пароля. С регистрацией все ок (на локальном и удаленном сервере), но вот сброс пароля не работает.

На локальном сервере при сабмите формы происходит следующее:

Получаю сначала 404ую:

POST https://api.com/v3/users/recovery-password 404 ()

Затем алерт со таким содержимым (при условии, что данные введены корректные):

{"code":113,"message":"User not found"}

Если говорить про то же самое приложение на удаленном сервере, то при сабмите формы просто ничего не происходит. Вкладка network пустая, консоль тоже.

Собственно часть кода, которая отвечает за отправку:

onSubmit(ev) {
ev.preventDefault()
let vals = this.state.vals
for ( let key in vals) {
  if ( vals.hasOwnProperty(key) && vals[key] === null ) {
    $( "form input:visible" ).each( function() {
        if (!$(this).val()){
          $(this).addClass( 'has-error' )
        }
    } )
    if ( ( !( key === 'name' || key === 'password' ) ) && ( $( 'body' ).hasClass( 'recover-page' ) ) ) {
      return false
    }
  }
}
if ( Object.keys( vals ).some( key => vals[ key ] === null ) ) return
this.setState( { class: "form loading" } )
let bThis = this
if ( $( 'body' ).hasClass( 'recover-page' ) ) {
  const data = {
    email: vals.email,
    platformName: vals.domain
  };
  const boundary = String(Math.random()).slice(2);
  const boundaryMiddle = '--' + boundary + '\r\n';
  const boundaryLast = '--' + boundary + '--\r\n'
  let body = ['\r\n']
  Object.keys( data ).forEach( key => {
    body.push( 'Content-Disposition: form-data; name="' + key + '"\r\n\r\n' + data[key] + '\r\n' );
  } )
  body = body.join( boundaryMiddle ) + boundaryLast
  const xhr = new XMLHttpRequest()
  xhr.open('POST', 'https://api.com/v3/users/recovery-password', true)
  xhr.setRequestHeader('Content-Type', 'multipart/form-data; boundary=' + boundary)
  xhr.onreadystatechange = function() {
    if ( this.readyState !== 4 ) return
    if( this.responseText === 'null' ){
      bThis.setState({class: "form recoverSuccess"} )
    } else {
      alert(this.responseText)
    }
  }
  xhr.send(body);
  return false
}
this.sendReq(vals)
}

Подскажите, пожалуйста, что здесь может быть не так?

Answer 1

Все оказалось очень просто — запрос отправлялся на старую версию АПИ.

READ ALSO
Как сравнить две даты без учета GMT?

Как сравнить две даты без учета GMT?

На сервер приходит дата

147
Не работает аниманиция Vue JS

Не работает аниманиция Vue JS

Передаю опцию data в другой экземпляр, в Sidebar из Header Сначала работала плавная анимация Sidebar, после того как я стал передавать опцию в Sidebar, анимация...

201