AJAX没有提交表单

时间:2017-02-01 11:05:37

标签: jquery html ajax

这样可以防止发布表单。这就是我理解的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) {}
  });
}

3 个答案:

答案 0 :(得分:0)

您的form没有method。如果您未向type调用提供$.ajax()值,则不会发送请求,并且会立即调用error方法。

以下是此行为的示例:https://jsfiddle.net/csw0tu69/

要解决此问题,只需将form设为method

即可
<form method="post" id="Name" action="updateContent.cshtml" class="abc hidden">

Working example

答案 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。

我刚刚添加了一个提交按钮,它按预期工作。

相关问题