我在视图上有一个HTML.ActionLink
。我正在做的是我正在调用$.ajax()
函数,该函数检查来自anction
的返回true或false。它击中动作,返回所需的结果true / false。但问题是当它返回false时。我需要显示一个alert
,并且只有在它返回true的情况下才应该重定向。
ActionLink的:
<%: Html.ActionLink("Add Race", "AddRace",
new {eventId = Model.EventId, fleetId=Model.SelectedFleet.ID},
new{onclick="return checkFleetAddedandScroing()"}) %>
功能:
function checkFleetAddedandScroing() {
debugger;
$.ajax({
type: "GET",
url: '<%=Url.Action("CheckFleetExists", new {eventId=Model.EventId})%>',
dataType: "json",
cache: false,
success: function (data, textStatus) {
data = eval("(" + data + ")");
if (data == true) {
alert('Ok button clicked');
return true;
}
else {
alert("Cannot delete this fleet becasue either you have already added races to this event or the fleet has used for boat registration.");
return false;
}
}, //success
error: function (req) {
}
});
}
它总是重定向..它是否返回true / false ..它应该只在它返回true时才重定向....
请纠正我在哪里做错了..
答案 0 :(得分:2)
你从AJAX回调中返回false。
这与外部函数的返回值无关; AJAX回调甚至不会在以后开始运行。
答案 1 :(得分:1)
你必须等待你的请求才能收到结果,并且这样做会将ajax函数的async参数设置为false。
编辑:您的情景很幸运。你总是可以返回false,如果成功删除,则调用一个名为DoRedirect
的函数。
这是要走的路:
function checkFleetAddedandScroing() {
debugger;
$.ajax({
type: "GET",
url: '<%=Url.Action("CheckFleetExists", new {eventId=Model.EventId})%>',
dataType: "json",
timeout: 30000,
cache: false,
success: function (data, textStatus) {
data = eval("(" + data + ")");
if (data == true) {
alert('Ok button clicked');
DoRedirect();
}
else {
alert("Cannot delete this fleet becasue either you have already added races to this event or the fleet has used for boat registration.");
}
}, //success
error: function (req) {
}
});
return false;
}
function DoRedirect(){
//code for do redirect
}
喝彩!