逐一循环ajax请求并逐一显示结果
Loop ajax request one by one and show result one by one?
我想检查一些电子邮件地址是否在网站上注册了cURL功能。
在这种情况下,我有3个textarea
元素。第一个包含电子邮件列表,第二个包含实时电子邮件(表明电子邮件已注册),第三个包含未注册的电子邮件。然后有一个叫做"检查"的按钮,如果用户点击这个,那么它会发出一个AJAX请求,一个接一个,并一个接一个地显示结果,而不是一次多个AJAX请求(async: true
)或一个接一个AJAX请求,但在请求结束时一次结果(async: false
)。
问题,如果我使用async: true
我的浏览器会崩溃大列表,如果我使用async: false
我不知道我的应用程序是否正在运行,因为它在请求结束时显示结果,甚至请求是一个接一个。
那么,为了使我的问题简单,这里是我的代码。
$("div#check").click(function(){
//Assume i just grab email lists from text area and put in array
var mail_lists_clean = ["a@yahoo.com", "b@aol.com", "c@gmail.com"];
var promises = [];
$.each(mail_lists_clean, function(index, value){
var promise = $.ajax({
method: "POST",
url: "valid_check.php",
//cache: false,
async: false,
data: {
email: value
}
}).success(function(data) {
if (data == "live") {
//append email to second textarea
}
else {
//append email to third textarea
}
});
promises.push(promise);
});
$.when.apply($, promises)done(function() {
alert("All Request done!");
}).fail(function() {
console.log("error");
});
});
谁能帮助我使AJAX请求一个接一个,显示结果一个接一个?请更正我上面的代码。谢谢。
逐个调用ajax
需要递归调用$.ajax
success
回调函数
function ProcessEmailList(mail_list) {
// process one email at a time
var value = mail_list.pop();
// if there is email in the array
if (value) {
$.ajax({
method: "POST",
url: "valid_check.php",
async: false,
data: {
email: value
}
}).done(function(data) {
if (data == "live") {
//append email to second textarea
} else {
//append email to third textarea
}
// recursion call, process rest of the email
ProcessEmailList(mail_list);
}).fail(function() {
console.log("error");
});
} else {
// no more email in the array, we have processed all
alert("All Request done!");
}
};
$("div#check").click(function() {
//Assume i just grab email lists from text area and put in array
var mail_lists_clean = ["a@yahoo.com", "b@aol.com", "c@gmail.com"];
ProcessEmailList(mail_lists_clean);
});
为什么不在一个ajax请求中一次性传递所有的电子邮件地址,并将结果传递回来呢?这样一来,长长的地址列表就不会成为问题,而且还会为你省掉很多弄清楚哪些请求得到了处理,哪些请求没有得到处理的麻烦。这对性能也会更好。
相关文章:
- 当查询不在displayField中时,引导Ajax Typeahead不显示结果
- JavaScript循环无法正确计算/显示结果
- 将循环中的两个文本框相乘,并在第三个文本框上显示结果
- BMI计算器以Javascript显示结果
- 在表中显示结果
- onchange选择get value并执行查询,然后在同一页面上显示结果
- 搜索XML文件并使用javascript显示结果
- Moment.js不显示结果
- 使用jQuery延迟表单输入,并在延迟后在同一页面上显示结果
- 防止 PHP 在新页面中显示结果
- jquery jqgrid 不显示结果,具体取决于 JSON 对象中的参数
- Angular-如何显示结果,仅在未选中时显示
- backbone.js视图没有't由于异步获取而显示结果;t渲染
- jqueryajax帖子将我发送到操作页面,并且不会显示结果数据
- 添加两个数字,并使用Javascript在文本框中显示结果
- 接受用户输入,与JSON数据匹配,并以javascript显示结果
- 自动完成 JQuery 不显示结果
- 控制台.log或显示结果的函数
- 提交表单,使用脚本处理信息,并在同一页面上显示结果
- AJAX 实时搜索仅当结果以相同的第一个字母开头时才显示结果