bogdan_uman
@bogdan_uman
шлЫмазл неукЪ-поцЪ

RAILS + AJAX + Ошибка?

Здравствуйте. Подскажите как правильно вывести ошибку (синтаксическую или логическую), та что пишется в лог файле.
Раньше когда было реализовано на JQuery.ajax, эти ошибки отлавливались и их можна было отобразить в браузере. Сейчас переписал все на fetch() и теперь только пишет, ошибка 500. И все подробности только в лог файле
вот JS функция которая реализовывает AJAX.
static ajax( caption, url, type, dataValue, dataType, callSuccess, loader = true ) {
    this.pageLoader( loader );

    const scriptRun = text => {
      const script = document.createElement( 'script' );
      script.innerHTML = text;
      document.head.appendChild( script );
    };

    const success = data => {
      if ( dataType === 'json' ) {
        if ( data.status ) {
          const { href, view } = data;

          if ( href ) {
            if ( href.search( /.pdf$/i ) === -1 ) this.assignLocation( href ); else window.open( href );
          } else if ( view ) {
            document.getElementById( 'view' ).innerHTML( view );
          }
          if ( callSuccess ) callSuccess( );
        } else {
          this.errorMsg( data.caption || caption, JSON.stringify( data.message, null, ' ' ) );
        }
      } else if ( dataType === 'script' ) {
        scriptRun( data );
      }

      if ( loader ) this.pageLoader( false );
    };

    const sendAjax = async ( ) => {
      let data = '';
      const headers = { 'Content-Type': 'application/json' };
      const body = dataValue ? JSON.stringify( dataValue ) : '';

      const credentials = 'same-origin';
      const respond = await fetch( url, { method: type, body, headers, credentials } );
      if ( respond.ok ) {
        if ( dataType === 'json' ) {
          data = await respond.json( );
        } else if ( dataType === 'script' ) {
          data = await respond.text( );
        }
      } else {
        const message =  { status: respond.status, statusText: respond.statusText };
        throw new Error( JSON.stringify( message, null, ' ' ) );
      }

      return data;
    };

    sendAjax( )
      .then( data => success( data ) )
      .catch( reason => this.errorMsg( caption, reason ) );
  }
  • Вопрос задан
  • 167 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы