我已阅读了许多主题,问题和问题,我找到了答案。 但我想问一下,如果我的功能还可以。
我必须在onclick事件中使用不同的id来处理表单。
function setBoocking() {
if ($('.ajaxre').length) {
var key = 0;
//var ajaxboocking = [];
var sotredPDF = new Array();
$('.ajaxre').each(function () {
var form = $(this);
var data = form.serialize();
$.ajax({
async: false,
timeout: 4000,
url: "ajaxloader.php",
type: "POST",
data: data,
dataType: "json",
success: function ($data) {
if ($data != null) {
if ($data.status == 1) {
alert("all fine"):
}
}
},
error: function ($databack) {
ajaxfehler('normal');
loading('end');
}
});
});
}
}
HTML
<div class="ajaxre">
<form class="ajaxre" id="1">
<input type="hidden" name="test" value="test1" />
</form>
</div>
<div class="ajaxre">
<form class="ajaxre" id="2">
<input type="hidden" name="test" value="test2" />
</form>
</div>
<div class="ajaxre">
<form class="ajaxre" id="3">
<input type="hidden" name="test" value="test3" />
</form>
</div>
<br />
<br /><a onclick="setBoocking();">test</a>
所以你看我在我的ajax请求async:false。这样可行。但我可以使我的函数使用asynchronus请求“我将设置timout函数”不用asnc,并等待一个reuest完成或得到错误,然后尝试下一个请求?
非常感谢
答案 0 :(得分:0)
如果请求发生,你可以尝试这样的事情,延迟函数调用一秒钟。
var pause = false;
function request(data) {
if (!pause) {
pause = true;
$.ajax({
url: "ajaxloader.php",
type: "POST",
data: data,
dataType: "json",
success: function ($data) {
if ($data != null) {
if ($data.status == 1) {
alert("all fine");
pause = false;
}
}
},
error: function ($databack) {
ajaxfehler('normal');
loading('end');
pause = false;
}
});
} else {
setTimeout(function() {
request(data);
}, 1000);
}
}
function setBoocking() {
if ($('.ajaxre').length) {
var key = 0;
//var ajaxboocking = [];
var sotredPDF = new Array();
var in_request = false;
$('.ajaxre').each(function () {
request($(this).serialize());
});
}
}
答案 1 :(得分:0)
Ajax请求返回了所知的延迟,你可以做的是将所有ajax请求的响应存储在一个数组中然后使用。
$.when.apply($, promises).then(function(){
});
这将允许您的所有调用都运行异步。 (Promises是ajax延迟对象的数组)。
这篇文章可以帮助您充分理解:
http://richardneililagan.com/2011/05/using-deferred-objects-in-jquery-1-5/