2016-08-10 2 views
2

Может ли кто-нибудь взглянуть на код ниже, поможет мне выяснить, что я делаю неправильно? Я получаю эту ошибкуОшибка HTTP-запроса HTTP

ошибки XMLHttpRequest {readyState: 1, время ожидания: 0, withCredentials: ложь, загрузка: XMLHttpRequestUpload, responseURL: "" ...}

, когда я пытаюсь сделать запрос на изображение Galary NASA, чтобы принести изображение ..

HTML:

<img id="map" src="" alt="image from NASA"> 

JS:

var get = function(url){ 
    return new Promise(function(resolve,reject){ 
     var xhr = new XMLHttpRequest(); 
     xhr.onreadystatechange = function(){ 
      if(xhr.readyState === 4 && xhr.status == 200){ 
       var result = xhr.responseText; 
       result = JSON.parse(result); 
       resolve(result); 
      }else { 
       reject(xhr); 
      } 
     } 
     xhr.open("GET",url,true); 
     xhr.send(null); 
    }) 
} 

get('https://api.nasa.gov/planetary/apod?api_key=NNKOjkoul8n1CH18TWA9gwngW1s1SmjESPjNoUFo' 
) 
.then(function(response){ 
    console.log("success",response); 
    document.getElementById('map').src = response.url; 
}) 
.catch(function(err){ 
    console.log('error',err) 
}) 
+0

шаблон HTML является image from NASA

ответ

1

Вашего другое заявление находится в неправильном месте

Аякса запрос проходит через этих различных состояния

State Description 
0  The request is not initialized 
1  The request has been set up 
2  The request has been sent 
3  The request is in process 
4  The request is complete 

readyState события будет срабатывать, как изменить эти состояния, поэтому мы проверяем, что четвертое состояние является тем, которое вызывает обратный вызов, когда запрос завершен, и у нас есть возвращаемые данные.

Вы используете заявление еще, что огонь по 1, или любое государство, кроме 4 действительно, но 1 является первым readyState, когда запрос первой настройки, вы должны ждать, пока он не достигнет четвертого readyState

var get = function(url){ 
    return new Promise(function(resolve,reject){ 
     var xhr = new XMLHttpRequest(); 
     xhr.onreadystatechange = function(){ 
      if(xhr.readyState === 4) { 
       if (xhr.status == 200) { 
        var result = xhr.responseText; 
        result = JSON.parse(result); 
        resolve(result); 
       }else { 
        reject(xhr); 
       } 
      } 
     } 
     xhr.open("GET",url,true); 
     xhr.send(null); 
    }) 
} 

FIDDLE

+0

спасибо так много !!!! Просто была исправлена ​​ –

+0

добро пожаловать! – adeneo

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