我有一组带有点击事件的链接(添加到愿望列表)。单击事件检查用户是否已登录(ajax请求),并根据结果继续单击。在用户没有登录的情况下,我有一个通用的jQueryUI模式对话框,用户可以使用它登录
这一切都很好,但我想扩展功能,以便在用户使用对话框登录后继续单击链接。
即。点击添加到心愿单->登录?
- 是->继续链接单击(添加到愿望列表)
-
否->显示登录对话框->用户提交凭据->已登录?
-
是=>继续链接单击(添加到愿望清单)
- NO=>显示登录错误
当然,我不想通过ajax和jquery执行任何回发。
感谢
您可以将点击操作的url传递到登录模式,并在成功登录后重定向。或者,如果您已将其设置为通过AJAX登录,则可以存储点击事件目标,然后在成功登录后触发点击事件。
类似以下内容:
var is_logged_in = false;
$('a.add_to_wishlist').click(function(e) {
if(is_logged_in) {
//do stuff
} else {
show_modal(e.target); //pass the event target to the modal
}
});
function show_modal(trigger) {
//do stuff
is_logged_in = true;
$(trigger).trigger('click');
}
希望这能有所帮助。
如果您可以控制服务器端代码,那么您应该将身份验证+保存到愿望列表放在同一请求中。
- 用户单击"添加到愿望列表"
- 将页面添加到愿望列表的Ajax请求发送到服务器
- 服务器检查用户是否已登录。
- 如果用户登录:将项目保存到愿望列表并返回成功响应
- 如果用户未登录:返回一个失败的响应
- ajax响应回调应该根据响应更新UI
如果您无法控制服务器代码,那么如果身份验证请求成功,则必须发出两个ajax请求。