0

我有一个HTML.ActionLink视图。我正在做的是调用$.ajax()函数来检查从anction. 它击中动作,返回所需的结果真/假。但问题是当它返回 false 时。我需要显示一个alert并且重定向应该只在它返回真实的情况下..

动作链接:

<%: 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) {

            }
        });
    }

它总是重定向..它是否返回真/假..只有当它返回真时才应该重定向....

请纠正我做错的地方..

4

2 回答 2

2

您从 AJAX 回调返回 false 。

这与外部函数的返回值无关;AJAX 回调直到稍后才会开始运行。

于 2012-10-28T19:38:50.550 回答
1

您必须等待您的请求接收结果,并且为此将 ajax 函数的异步参数设置为 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
  }

干杯!

于 2012-10-28T19:46:20.407 回答