我希望ajax函数在没有asynch: false
的情况下一个接一个地执行。因为asynch : false
将浏览器置于挂起模式。
我的代码是这样的
我有5个复选框
ch1,ch2,ch3,ch4,ch5
每个都有一个值作为函数名称。用户可以选择任意数量的复选框,但与复选框值相关联的ajax功能应该只能一个接一个地执行。
让用户选择
ch1,ch5,ch3
所以函数应该像
f1() -> f3() - >f5();
功能就像这样
function f1(){
$.ajax({
});
}
function f2(){
$.ajax({
});
}
function f3(){
$.ajax({
});
}
.
.
so on
我尝试在ajax成功方法中调用连续函数,但如果用户选择随机复选框,则会产生问题。
答案 0 :(得分:1)
我有类似的情况。
的解决方案强>
首先创建一个选定复选框的数组,其值为数组元素。然后创建一个检查该值的函数并调用其相应的函数。
function callRequired(array) {
var required = array[0];
if (required === "f1") {
f1(array);
}
if (required === "f2") {
f2(array);
}
if (required === "f3") {
f3(array);
}
if (required === "f4") {
f4(array);
}
if (required === "f5") {
f5(array);
}
}
我们在这里检查第一个元素是否需要回调。然后在每次成功后将其删除。只需删除该元素,然后通过删除前一个元素来调用callRequired(array)
,如下所示
function f1(array) {
jQuery.ajax({
url: "some/url",
success: function (response) {
array.splice(0, 1);
callRequired(array);
}
});
}
function f2(array) {
jQuery.ajax({
url: "some/url",
success: function (response) {
array.splice(0, 1);
callRequired(array);
}
});
}
function f3(array) {
jQuery.ajax({
url: "some/url",
success: function (response) {
array.splice(0, 1);
callRequired(array);
}
});
}
function f4(array) {
jQuery.ajax({
url: "some/url",
success: function (response) {
array.splice(0, 1);
callRequired(array);
}
});
}
function f5(array) {
jQuery.ajax({
url: "some/url",
success: function (response) {
array.splice(0, 1);
callRequired(array);
}
});
}
希望这有效。感谢
答案 1 :(得分:0)
你可以使用一个公共类来调用复选框更改事件,而不是在你也可以在复选框的数据属性中定义一些唯一的id并使用jquery属性方法根据你可以调用ajax的值来获取它。
答案 2 :(得分:0)
互相调用一个函数,例如:
function f1(){
$.ajax({
success: function(){
f2();
}
});
}
function f2(){
$.ajax({
success: function(){
f3();
}
});
}
答案 3 :(得分:0)
您可以使用jQuery.when
:
var ajax1 = $.ajax(...);
var ajax2 = $.ajax(...);
//You can pass as much arguments as needed here
$.when(ajax1, ajax2).done(function(){
alert('All requests complete');
});
请参阅文档以供参考:https://api.jquery.com/jquery.when/
答案 4 :(得分:0)
鉴于我没有示例代码,我会这样做。
你现在应该有:
var callbacks = [callback_one, callback_three, callback_four];
理想情况下,“one”,“three”,“four”是对应选中复选框的回调。然后保留一个指向当前回调的整数值。
最后,您启动第一个回调。在success
时,您增加整数值,如果它小于回调列表的长度,则调用下一个回调。