工作流:
宏观目标是不让用户等待任何事情,这是我尝试做的用户流程:
我现在遇到的问题是用户点击submit-survey
或skip-survey
后的效果。最先谈论跳过是最容易的。如果用户选择跳过调查,则会发生以下情况:
console.log
)如果用户填写调查并点击submit-survey
,那么会发生以下情况:
skip-survey
完全相同),页面上就会显示覆盖图。额外的复杂性是,调查提交到不同的路线,具体取决于用户点击submit-survey
时是否完成了第一个表单
代码
我借此机会了解更多有关异步流程的信息,这就是代码混乱的原因。现在我正在考虑的实施是,表单提交AJAX,一旦成功或失败,就会生成1)适当的调查提交URL和2)提交或调查最终触发的下一个操作)
就像......
$.ajax({
type : "POST",
url : '/orders/create_or_update',
dataType: 'json',
contentType: 'application/json',
data : JSON.stringify(params)
})
.done(function(){
// submit-survey post route
submit-url = '/orders/success_ajax_update'
// next action triggered by skip-survey and submit-survey
function nextAction() { console.log("fail") }
})
.fail(function(){
// submit-survey post route
submit-url = '/almost_orders/fail_ajax_update'
// next action triggered by skip-survey and submit-survey
function nextAction() { console.log("fail") }
})
$(document).on("click", "#submit-survey", function() {
if (isFunction(nextAction)) {
$.ajax({url: submit-url, ... })
nextAction()
} else {
addWorkingOverlay();
}
})
$(document).on("click", "#skip-survey", function() {
if (isFunction(nextAction)) {
nextAction()
} else {
addWorkingOverlay();
}
})
上面的问题是,如果用户在AJAX完成之前点击了submit-survey
或skip-survey
,那么就会添加工作叠加层,但是没有任何内容可以说明了#34;哦现在AJAX已完成,nextAction已定义,因此再次循环#34;。显然我可以添加一个计数器来检查isFunction(nextAction)
,但这似乎首先完全打败了AJAX的目的。
关于如何解决这个问题的想法?
有新意,需要更多帮助才能充实。根据文档,您可以像这样使用jQuery' .when
:
$.when( $.ajax( "/page1.php" ), $.ajax( "/page2.php" ) )
.then( myFunc, myFailure );
这可以在我的情况下工作,而不是一秒.ajax
我点击按钮(提交或跳过)。有了这个想法的问题就是,如何将用户点击提交或跳过按钮转换为.when
可以使用的已解决延迟?