Jquery 如何使用输出true或false的延迟结果
我很难理解承诺和尊重 我有一个简单的函数,如果用户是否登录,它将返回true或false:Jquery 如何使用输出true或false的延迟结果,jquery,Jquery,我很难理解承诺和尊重 我有一个简单的函数,如果用户是否登录,它将返回true或false: function checkAuth() { var IsSignedIn = false; $.ajax({ dataType:"json", url: '/utility/SignInStatus', //only returns true if signedin. or else nothing is returned. success: fu
function checkAuth() {
var IsSignedIn = false;
$.ajax({
dataType:"json",
url: '/utility/SignInStatus', //only returns true if signedin. or else nothing is returned.
success: function(result) {
IsSignedIn = (result);
},
error: function() {
alert("you're not logged in");
}
});
return (IsSignedIn);
}
在另一个文件中,我想使用checkAuth()
函数查看用户是否登录。如果checkAuth()返回true,则可以执行操作。如果返回false,则无法执行操作
$(document).on('click', 'a[name="deleteaccount"]', function(event) {
$.when(checkAuth()).done(function(result) {
// Here is where I want to see if checkAuth() was true or false
if (!result) {
// Show alert from the error return from checkAuth()
} else {
// Go ahead and delete the account code here
}
});)
};
我根本无法进入语句的
部分。当结果
为真
时,我如何实现这一点?以下方法完全遵循您的逻辑(并回答给定的问题):
。。。但是我会考虑不同的方法:您的代码> $Ajax < /Cord>调用应该导致“成功”,并且只有当用户被授权时,在所有其他情况下,将返回一个403代码(或类似的)。使用这种方法,可以使用$.ajax
返回的对象而不使用额外的延迟对象
function checkAuth() {
return $.ajax({
// ...
error: function() {
// some common action here - modal, etc.
}
});
}
checkAuth().done(function(result) {
// authorized
}).fail(function(result) {
// not authorized - do some UC-specific action
});
==
用于=
生成一个。您检查了deferred.resolve的结果(在done
中),但从未设置它。不确定您为什么需要它:是否应该在用户每次单击链接时调用checkAuth
函数?您不能只调用一次并将结果存储在某个状态变量中吗?因为会话可能会在后台(服务器上)过期,即使页面可能会被保留open@raina77ow你能解释一下如何从checkAuth()得到响应并评估它是真是假吗?但是我需要checkAuth()的错误在他们未登录时输出警报。最后,我想用一个要求用户注册/登录的模式对话框来替换警报。因此,只要在返回之前触发模式,在//fail
@chiliNUT之后触发模式,这意味着我必须为每个操作执行该操作。可能会发生数百起行动。我必须在所有这些文件中重复相同的代码。这是不可行的,听起来也不像是好的做法。是的。您可以在dtd.resolve(false)
@volumeone之前触发模式,但是,您最初的问题是如何评估check-auth的结果并显示警报,因此理所当然,您会将警报放在那里,只要不重复您的代码,我仍然不知道您的意思,您仍然必须将onclick事件应用于任何会受到影响的链接,因此我不认为onclick事件中的模态警报逻辑有什么问题
function checkAuth() {
return $.ajax({
// ...
error: function() {
// some common action here - modal, etc.
}
});
}
checkAuth().done(function(result) {
// authorized
}).fail(function(result) {
// not authorized - do some UC-specific action
});