2017-02-16 28 views
0

Я звоню в API и получаю результаты как ожидалось в JavaScript. Если возвращается статус 400, я вызываю другой API, который я делаю с оператором if. Тем не менее, это «если» никогда не срабатывает, я думаю, потому что мой ответ читается. Мой код:Невозможно правильно прочитать ответ API-вызова (JS)

var getSearchPrimary = { 
        url: 'SEARCH_URL', 
        type: 'POST', 
        crossDomain: true, 
        dataType: 'jsonp', 
        context : this, 
        cache : true, 
        timeout: 60000, 
        success : function(e) { 
         status = JSON.stringify(e.status.code); 
         if(status === "400"){ 
          console.log("failed"); 
          this.getSearchSecondary(query); 
         }else{ 
         console.log(JSON.stringify(e)); 
         } 

В этом случае, когда я console.log(status); я "400" так что я действительно не знаю, почему мой если заявление никогда не стрелять!

Отклик:

{ "Статус": { "код": "400", "сообщение": "Ошибка: не найдено результатов по запросу"}, "ответ": { "Результаты": ""}}

Я уже смотрел на это сейчас, и был бы очень признателен за понимание!

+0

Ваш консольный журнал возвращает 400 как строку или int? Потому что вы используете строгое сравнение '==='. Попробуйте использовать только '==' –

+0

Интересно - я просто попытался заменить (статус === "400") на if (! (E.response.length)), и это срабатывает. – bjorkland

+0

Я пробовал просто '==', но это ничего не решило. – bjorkland

ответ

1

Метод «успех» вызывается, когда запрос выполнен успешно. Когда возвращается 400, это не удастся. Вместо этого используйте свойство «error», чтобы предоставить функцию, которая выполняется при сбое запроса.

 Смежные вопросы

  • Нет связанных вопросов^_^