我有Jquery Ajax方法来调用MVC控制器动作。使用此方法中的返回值,我想用if条件执行一些操作。此方法在保存按钮单击中调用。如果返回true我想要返回保存操作,如果返回false我想显示验证。
这是我的Ajax方法:
$(function () {
$('#saveRefund').on('click', function (event) {
event.preventDefault();
var userName = $('#userName').val();
var password = $('#Password').val();
var sucess = setRefundformValidation()
if (sucess) {
$.ajax({
type: 'POST',
url: '/Service/Utility/IsLoginSucess',
data: { userName: userName, password: password },
success: function (data) {
debugger;
if (data == 0) {
$('#loginVal_').show();
return false;
}
else {
$('#loginVal_').hide();
return true;
}
}
});
}
else
{ return false; }
});
});
考虑这个功能 if(data == 0)显示验证,
if(data!= 0)返回表单操作
如果返回true,则不会重定向到控制器中的SAVE操作
请帮助
答案 0 :(得分:3)
因为ajax是异步的,所以返回true / return false将不会对ajax调用起作用,并且每次都会返回false。
Asyncronous意味着它不会等待成功结果,并且会直接通过它在整个ajax调用之后直接处理代码,这意味着每次都会返回返回false的默认值。当您的成功返回true时,该函数已经返回false以防止进一步的操作。
如果为true,则应该调用函数来执行您想要执行的操作,而不是返回false,如果为false,则应再次调用函数来处理所需的函数。