我有一个在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
,但它不起作用......
有人可以帮忙吗?
答案 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的结尾看起来很奇怪,它应该是:});
,因为我在我的代码中更正了。