这样可以防止发布表单。这就是我理解的preventDefault
。但是update()
函数不会将表单发送到提供的URL。我不明白为什么?
更新:我有相同的脚本在其他项目上工作。我认为问题出在我的HTML中。我虽然无法解决这个问题!
<form method="post" id="Name" action="updateContent.cshtml" class="abc hidden">
<input name="currentInput" type="text" class="navbar-brand logo" value="@content.Name" />
<input type="submit" name="currentPlaceHolder" value="Name" class="hidden" />
</form>
$(function () {
$('.abc').submit(function (ev) {
var frm = $(this);
update(frm);
ev.preventDefault();
});
});
function update(frm) {
$.ajax({
type: frm.attr('method'),
url: frm.attr('action'),
data: frm.serialize(),
success: function (data) {}
});
}
答案 0 :(得分:0)
您的form
没有method
。如果您未向type
调用提供$.ajax()
值,则不会发送请求,并且会立即调用error
方法。
以下是此行为的示例:https://jsfiddle.net/csw0tu69/
要解决此问题,只需将form
设为method
:
<form method="post" id="Name" action="updateContent.cshtml" class="abc hidden">
答案 1 :(得分:0)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<form id="Name" action="updateContent.cshtml" class="abc hidden" method="POST">
<input name="currentInput" type="text" class="navbar-brand logo" value="@content.Name" />
<input type="submit" name="currentPlaceHolder" value="Name" />
</form>
<script>
$(function() {
$('#Name').submit(function(e) {
e.preventDefault();
var action = $(this).attr('action');
var method = $(this).attr('method');
$.ajax({
url : action,
method : method,
data : $(this).serialize(),
success : function ( res ) {
alert(res);
}
});
});
});
</script>
答案 2 :(得分:0)
问题是HTML,而不是AJAX。
我刚刚添加了一个提交按钮,它按预期工作。