Javascript JQuery阻止表单在ajax中提交
一般来说,我不熟悉JQuery和ajax,我想在从控制器获取数据后禁用表单提交(我使用的是Asp.net核心MVC)。问题是,即使我取消提交,它也会提交,如下所示:Javascript JQuery阻止表单在ajax中提交,javascript,jquery,ajax,asp.net-mvc,Javascript,Jquery,Ajax,Asp.net Mvc,一般来说,我不熟悉JQuery和ajax,我想在从控制器获取数据后禁用表单提交(我使用的是Asp.net核心MVC)。问题是,即使我取消提交,它也会提交,如下所示: $("form").submit(function (e) { var link = '@Url.Action("Action", "Controller")'; var args = { arg1: Elem1.val(),
$("form").submit(function (e) {
var link = '@Url.Action("Action", "Controller")';
var args = {
arg1: Elem1.val(),
arg2: Elem2.val()
};
$.ajax({
type: "GET",
url: link,
data: args,
dataType: "json",
success: function (data) {
alert(data.canacess); //Shows False
if (data.canacess== true) {
AllEnable();
}
else { //Goes here
e.preventDefault(); //Dont do this
alert(data.erromessage); //Do this
}
},
error: function () {
alert("Error. Kontaktujte správce.");
return;
}
});
});
我认为它必须使用ajax,因为在其他代码中它都可以工作
谢谢你的帮助 e.preventDefault()
需要在submit
函数处理程序的范围内调用。现在,您正在AJAX回调处理程序中调用它,但为时已晚,无法产生任何效果
在我决定是否提交表格之前,有什么方法可以阻止我提交表格吗
对。为此,您需要始终调用e.preventDefault()
,以停止表单提交,从而为AJAX请求提供执行和返回响应的时间。然后,基于该响应,您可以直接提交HTMLFormElement对象,而不是jQuery对象,并将表单数据发送到指定的操作
。试试这个:
$(“表格”)。提交(功能(e){
e、 预防默认值();
var form=此;
$.ajax({
键入:“获取”,
url:'@url.Action(“Action”,“Controller”)',
数据:{
arg1:Elem1.val(),
arg2:Elem2.val()
},
数据类型:“json”,
成功:功能(数据){
if(data.canaccess){
AllEnable();
表单提交();
}
},
错误:函数(){
警报(“Error.Kontaktujte správce.”);
}
});
});
还要注意,在条件中使用布尔值时,将它们与真/假进行比较是多余的。类似地,
error
处理程序中的return
也是多余的,因为它是函数中的最后一条语句。e.preventDefault()
需要在submit
函数处理程序的范围内调用。现在,您正在AJAX回调处理程序中调用它,这已经太晚了,无法产生任何效果。好的,在我决定是否提交表单之前,是否有任何方法可以阻止表单被提交?当然。我为你添加了一个答案这是否回答了你的问题?忽略已接受的答案,看看其他答案,就像感谢answear!表单现在提交,但需要将一些参数传递给我的控制器,如模型和所有。。有办法吗?顺便说一句:我正在给你一件外套,因为它符合我的要求。