如何在for循环内部使用AJAX
How to use AJAX inside for loop
我想用我第一次调用AJAX时得到的新URL调用另一个AJAX函数。但如果我尝试这样的循环,它会失败。我认为for循环不会等到AJAX完成它的工作,但我不知道如何对抗它。有什么建议吗?
<!DOCTYPE html>
<html>
<head>
<title>Example</title>
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
<link rel="stylesheet" href="bootstrap.min.css">
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<style>
body{
background-color: #D4DAD8;
}
#content {
margin-left: auto;
margin-right: auto;
margin-top: 10px;
}
#kastid{
background-image: -ms-linear-gradient(top left, #FFFFFF 0%, #EDEDED 100%);
background-image: -moz-linear-gradient(top left, #FFFFFF 0%, #EDEDED 100%);
background-image: -o-linear-gradient(top left, #FFFFFF 0%, #EDEDED 100%);
background-image: -webkit-gradient(linear, left top, right bottom, color-stop(0, #FFFFFF), color-stop(1, #EDEDED));
background-image: -webkit-linear-gradient(top left, #FFFFFF 0%, #EDEDED 100%);
background-image: linear-gradient(to bottom right, #FFFFFF 0%, #EDEDED 100%);
padding: 3px 3px;
height: 400px;
}
</style>
</head>
<body>
<div id="content"></div>
<script type="text/javascript">
var url1 = "https://www.readability.com/api/content/v1/parser?url=";
var urltoken = "&token=18ba7d424a0d65facdaea8defa356bc3e430f8ce";
var i = 0;
var link = [];
var finalurl = [];
var pubDate = [];
$.ajax({
url:'https://www.readability.com/rseero/latest/feed',
dataType:'xml',
type:'GET',
success:function(xml) {
$(xml).find('item').each(function() {
pubDate[i] = $(this).find("pubDate").text();
link[i] = $(this).find("link").text();
finalurl[i] = url1 + link[i] + urltoken;
console.log(i);
console.log(finalurl[i]);
console.log(link[i]);
i++;
});
},
error:function() {
alert("Feed error.1.!");
}
}).done(function () {
for(i = 0; i < finalurl.length; i++) {
getInfo(i);
}
});
function getInfo(i) {
$.ajax({
url:finalurl[i],
dataType:'xml',
type:'GET',
success:function(xml) {
console.log(finalurl[i]);
var title = $(this).find("title").text();
var content = $(this).find("content").text();
$("#content").append('<div class="col-md-4 col-xs-12" id="kastid"><a href="'+link[i]+'">'+title+'</a><p><p>'+pubDate[i]+'<p><p>'+description);
},
error:function() {
console.log(finalurl[i]);
alert("Feed error..!");
}
});
}
</script>
</body>
</html>
使用Promise
功能。这允许您在异步代码完成运行后运行一段代码。这意味着使用promise,在第一个ajax完成后,可以执行第二个ajax,并可以访问第一个ajax中的数据。
请参阅http://api.jquery.com/promise/
需要注意的是,来自$.ajax()
的返回对象实现了Promise
接口,并且可以直接用作promise。
相关文章:
- Ajax内部的Ajax在循环中
- 调用Ajax内部的函数
- Ajax内部触发器成功
- ajax内部传递变量成功
- 如何使用Ajax内部调用JQuery在函数中获取返回值
- 在 ajax 内部调用 ajax
- 使用 Jquery 在 AJAX 内部加载 AJAX
- AJax 内部服务器错误 500
- 使用 jQuery 禁用 AJAX 内部的输入
- 不能连接一个 ajax 中的 javascript 变量,而另一个 ajax 内部的 javascript 变量
- Ajax 在 ajax 内部调用
- ajax内部访问类功能成功
- AJAX内部回调成功
- SAP HANA XSJS Ajax内部服务器错误
- jQuery“Uncaught"在ajax内部调用尝试…抓住
- Ajax内部For循环
- JQuery卷轴在AJAX内部被称为DOM change / insert .load()
- Ajax内部的Ajax有些奇怪的行为
- 可以传递$.Ajax内部变量值为全局
- ajax内部的ajax成功