有人可以看一下下面的代码帮助我找出我做错了什么吗?我收到这个错误
错误 XMLHttpRequest {readyState:1,超时:0,withCredentials:
false,上传:XMLHttpRequestUpload,responseURL:“”…}
当我试图向 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)
})
您的 else 语句位置错误
ajax 请求会经历这些不同的状态
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
The readyState
当这些状态发生变化时,事件将会触发,这就是为什么当请求完成并且我们有返回的数据时,我们检查第四个状态是否是触发回调的状态。
您正在使用将触发的 else 语句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 https://jsfiddle.net/murtx6za/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)