我想知道我的代码是否应该在我的AJAX函数中有return语句。这是一个例子:
$.ajax({
type: 'POST',
url: 'Application.cfc?method=runProcess',
data: {'userID':userID},
dataType: 'json'
}).done(function(obj){
if(obj.STATUS == 200){
$('#searchMsg').addClass("success").show().text(obj.MESSAGE).delay(3500).fadeOut('slow').queue(function(){
$(this).removeClass("success").dequeue();
});
return true; //Should I keep this
}else{
$('#searchMsg').addClass("error").show().text(obj.MESSAGE).delay(3500).fadeOut('slow').queue(function(){
$(this).removeClass("error").dequeue();
});
return false; //Should I keep this
}
}).fail(function(jqXHR, textStatus, errorThrown){
alert(errorThrown);
});
正如您所看到的,我的函数中有两个return语句。两者都将返回true或false取决于ajax返回obj。我应该保留他们的功能吗?拥有它们有什么好处,有什么缺点?如果有人可以解释请告诉我。谢谢!
答案 0 :(得分:1)
如果您发送ajax调用以检查某些内容并且返回服务器存在则不需要此true或false它们返回true否则为false例如,如果存在返回true,则我将ma用户名和密码发送到数据库我检查ajax是否返回true他们用户登录到系统,如果false表示用户不存在但不需要真假,如果存在则需要打开新链接否则给出错误不存在它取决于你想要什么情况但不必返回true false它不是强制性的 代码示例
$.ajax({
url: geturl,
type: "POST",
data:{email:email,pass:pass},
success: function (res) {
if (res == "admintrue")
{
AutoLoader("Admin Login Succeffully", "success");
var URL = $("#Afetlogin").val();
window.location.href = URL;
} else if (res == "membertrue") {
AutoLoader("Member Login Succeffully", "success");
var URL = $("#memberlogin").val();
window.location.href = URL;
}
else {
AutoLoader("Error", "error");
}
}
})
答案 1 :(得分:0)
没有。删除它们。他们什么都不为你做。你已经能够知道你的回调函数中if/then
的哪一部分成功或失败了AJAX调用。
所有这些语句都会将一个值发送回调用者,然后调用者可以按照自己的意愿使用并停止编程执行。这里,调用者是done
方法调用,它不期望任何返回值,并且因为你将语句作为函数中最后的事情,所以执行将会停止。