我似乎遇到了典型的“异步问题”,无法解决。
我有一个引导表单向导,这只是一个即兴的标签/幻灯片类似的东西。我所有的“步骤”都是在各自的标签/幻灯片内的表格。
它有一组下一个/上一个按钮可以在幻灯片周围导航。并且在移动到下一张幻灯片之前,它提供了一个函数回调。在其中(回调),我正在“客户端验证”当前幻灯片中的表单,如果它被验证了,那么我将使用Ajax提交表单。一旦我从服务器得到响应,我就决定是返回true(继续下一张幻灯片)还是返回false(停止导航到下一张幻灯片)。
我已经调查了..
Async:false
,但这会疯狂地挂起浏览器(按设计),直到请求完成,所以不要挂起,这正是我想要的。我的代码如下所示。
JS.
jQuery('#progressWizard').bootstrapWizard({
'nextSelector': '.next',
'previousSelector': '.previous',
onNext: function (tab, navigation, index) {
if (index == 1) { // Here I am deciding which code to execute based on the current slide/tab (index)
if (jQuery("#paymentstep1").data('bValidator').validate()) {
var data = new FormData(jQuery('#paymentstep1')[0]);
jQuery("#cgloader").fadeIn();
var success = false;
jQuery.ajax({
type: "post",
async: false,
contentType: false,
processData: false,
url: "xyz.php",
dataType: "json",
data: data,
success: function (r) {
return r;
}
});
}....
onnext
的文档如下:
单击下一步按钮时触发(返回false以禁止移动到下一步)
因此,只需从处理程序返回false
即可。在AJAX success回调中,调用next
进入下一张幻灯片。
var requestCompleted = false;
jQuery('#progressWizard').bootstrapWizard({
'nextSelector': '.next',
'previousSelector': '.previous',
onNext: function (tab, navigation, index) {
if (index == 1) { // Here I am deciding which code to execute based on the current slide/tab (index)
if (jQuery("#paymentstep1").data('bValidator').validate()) {
if(!requestCompleted) {
var data = new FormData(jQuery('#paymentstep1')[0]);
jQuery("#cgloader").fadeIn();
var success = false;
jQuery.ajax({
type: "post",
url: "xyz.php",
data: data,
// ...
success: function (r) {
requestCompleted = true;
jQuery('#progressWizard').bootstrapWizard('next');
return r;
}
});
return false;
}
}
}
});
本文向大家介绍请写一个sleep(暂停)函数相关面试题,主要包含被问及请写一个sleep(暂停)函数时的应答技巧和注意事项,需要的朋友参考一下
问题内容: 我有该代码: 它可以很好地上传图像,但是问题是我找不到一种逐一上传图像的方法,我试图将 async 选项 设置为false, 但是它冻结了网络浏览器,直到所有图像都被上传为止,这不是我所需要的。想要,我想以某种方式模拟此 “ async:false” 选项以执行相同的操作,但不冻结Web浏览器。 这该怎么做 ? 问题答案: 您可以创建一个Promise数组,以便在所有Promise都解
#include <stdio.h> int global = 1; int func(void) { return (++global); } int main(void) { printf("%d\n", global); return 0; } 技巧 使用gdb调试程序时,可以使用“call”或“print”命令直接调用函数执行。以上面程序为例: (gdb)
问题内容: 我过去曾经做过一些jQuery,但是我完全坚持了这一点。我了解使用同步ajax调用的优缺点,但是在这里将是必需的。 远程页面已加载(由firebug控制),但未显示任何返回信息。 我应该采取什么措施才能使函数正确返回? 问题答案: 在发出同步请求时,应该 范例-http://api.jquery.com/jQuery.ajax/#example-3 请注意: 设置异步属性设置为fals
问题内容: 但是我的问题是不对的: 我正在执行许多ajax请求,并将它们保存在数组中: 正如相关问题所表明的那样,$ .when方法 按顺序 接受 一些对象,但是在这里我要 列出它们的清单 。 我在http://api.jquery.com/jQuery.when/#jQuery-when- deferreds中 阅读了文档,但是该方法似乎不支持这种情况(将to 列表传递给函数) 怎么会这样?请帮
问题内容: 我希望for in循环向Firebase发送一堆网络请求,然后在该方法完成执行后将数据传递给新的视图控制器。这是我的代码: 我有几个问题。首先,如何等待for循环完成并且所有网络请求完成?我无法修改observeSingleEventOfType函数,它是firebase SDK的一部分。另外,我是否会尝试通过for循环的不同迭代(有意义的希望)访问datesArray来创建某种竞争条