我只是测试的本地应用程序,并希望让这样的事情:
点击按钮,这很容易。
执行Ajax请求,并创建一个数据库表。
一旦创建了表,执行另一系列AJAX请求,并根据从一系列的选择框找到了一些参数填充表。
“动画”使用进度条整个事情。
出人意料的是,一切工作正常(除了最后一点),但我发现了一些麻烦。
该表被创建并填充,但是由于某种原因,最后AJAX请求不正确触发,因为它不能正确地传递参数。
我的Ajax请求都asyncronous,如果我将它们syncronous整个事情会冻结,但所有的请求都正确执行,即使是最后一个。
例如,让我们说,我不想为了不结冰的页面,能够显示一个进度条使用asyncronous请求。
这些问题如下:
是否有可能调用相同的脚本两次 ?
有没有一种有效的方法,以避免其他Ajax请求之前执行Ajax请求?
在这里计算器读一大堆话题之后,我编辑我的代码,并试图:
使用jQuery.AJAX原型,而不是jQuery.POST
asyncronously设置好一切,为了不结冰的页面,并能够处理进度条
演出第二天AJAX请求到父AJAX请求的“成功”的回调。
在这一点上,我还有另一个问题:
通过堆叠AJAX请求,它实际上是TRUE时执行到“成功”回调一切都将Ajax请求完成后执行?
这是我表演什么:
$.ajax({
type: "POST",
url: '../libs/php libraries/agenda.php',
data: {'action':'create>agenda', 'sqlname': createInfo},
processData: true,
dataType: "json",
timeout: 60000,
async: true,
success: function(res) {
$('#popup_content').append(res.log);
var dateList = new Array();
var dateObj = new Date();
var m = dateObj.getMonth();
var Y = dateObj.getFullYear();
for (var i = 1; i <= 31; i++) {
dateList.push(i+"/"+m+"/"+Y);
}
for (var i = 0; i < dateList.length; i++) {
var rs = false;
$.ajax({
type: 'POST',
url: '../libs/php libraries/agenda.php',
data: {'action':'validate>date', 'date': dateList[i]},
processData: true,
timeout: 60000,
async: true,
dataType: "json",
success: function(x) {
$('#popup_content').append(x.log);
if (x.res == 'true') {
rs = dateList[i];
}
if (rs != false) {
$.ajax({
type: 'POST',
url: '../libs/php libraries/agenda.php',
data: {'action':'create>day', 'date': rs, 'sqltable': createInfo},
processData: true,
timeout: 60000,
async: true,
dataType: "json",
success: function(newResult) {
console.log(newResult.res);
$('#popup_content').append(newResult.log);
}
});
}
}
});
}
}
});
第一AJAX请求正确执行,第二个不过,但在第三个(具有data: {'action':'create>day', 'date': rs, 'sqltable': createInfo}是变燃煤但是缺少上面定义的参数Rs。
此外,为了更清晰,RS是我,当我试图让“成功”回调外的请求,在这种情况下,变量RS也没用使用$。当和$ .done,当定义一个临时变量,但它不会改变任何东西。
同样,就像上面说,整个事情的作品使用syncronous请求,但通过使用asyncronous一个没有。
此外,我只是要在本地使用这个脚本,所以延误或每一个问题的相关引起的服务器和客户端的延迟并不重要。
没有任何理由为最后一次请求不以asyncronous要求工作? 如果是的话是有这种情况下,有价值的解决方案? 我也查了一下队列的主题,但它并没有任何解决我的问题。 对于一些原因,asyncronously,最后一个AJAX请求得到的只是部分地解雇,因为变量RS是没有得到正确传递。