Ajax.Actionlink onBegin没有用jquery取消请求

时间:2014-04-23 08:43:03

标签: javascript jquery ajax

我有一个在ajax.actionlink的“onBegin”ajax选项中调用的函数

function cancelAction() {
    $.ajax({
        data: { p: "test", z: "value" },
        url: '@Url.Action("DoSomething", "TestCtlr")',
        type: "GET",
        dataType: "json",
        success: function (data) {
            if (data.do == 0) { 
                 // do something
            }

            else {
                alert("error message");
            }

        },

    }
    )}
return false;
}

当我点击链接时,会显示警告并显示错误消息,但是actionlink会继续执行控制器操作,而不是打破它。

这是actionlink的代码

@Ajax.ActionLink("Click here",//link text
  "Insert", // action name
  "Projects",  // controller
  new { poz = item.itemID.ToString() }, // route values 
  new AjaxOptions() { HttpMethod = "GET", UpdateTargetID = "PrjDiv", OnBegin = "cancelAction", OnSuccess = "Initiate_Dialog" }, // ajax options
  new { @class = "openDialog", @id = item.idemID.ToString() } //htmlAttributes
  )  

修改

我更改了代码以匹配vekah的答案,现在它正在工作,除了我无法重定向工作。

我尝试将$.ajax(this.url)$.ajax(this.href)代替//do something,但它不起作用......

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

问题是你从匿名成功ajax函数返回false。 并且你想从cancelAction返回false。

您应该删除那些return false;并将其放在ajax声明之后。

编辑: 好的代码示例。

function cancelAction()
{
$.ajax({
        data: { p: "test", z: "value" },
        url: '@Url.Action("DoSomething", "TestCtlr")',
        type: "GET",
        dataType: "json",
        success: function (data) {
            if (data.do == 0) {
// DO SOME REDIRECTION BECAUSE EVENT WILL BE PREVENT
 }
            else {
                alert("error message");
            }

        }
    });
return false;
}

编辑²:你有一些语法错误!这是你真正的代码吗?控制台不会给你一些错误吗? (你的ajax的结尾看起来很奇怪,它应该是:});,因为我在我的代码中更正了。