如何在表单提交后进行Ajax POST

时间:2015-04-29 06:18:53

标签: javascript ajax asp.net-mvc

我认为这很简单,但我无法在任何地方找到如何做到这一点,正如标题所说,在成功提交表格后,你如何做一个ajax帖子。我试图搜索它,但我看到的只是我需要的一个与ajax帖子后提交的相反。我会尝试制作一个非常类似于我工作的程序的草稿。
这是我的表格。

<h2>My Form </h2>
@using (Html.BeginForm(new { @class = "submitForm" }))
{
    <label>Loan Amount</label>
    @Html.DropDownListFor(model => model.Loan.LoanAmount, Model.DropDownOfLoanAmount, new { @class = "LoanAmount", @data_bind = "value: selectedLoanAmount" })
    @Html.ValidationMessageFor(model => model.Loan.LoanAmount)

    <label>Loan Receivable</label>
    @Html.TextBoxFor(model => model.Loan.LoanReceivable, "{0:0,0.00}", new { @class = "LoanReceivable", @readonly = true, dir = "rtl", @data_bind = "value: loanReceivable" })
    @Html.ValidationMessageFor(model => model.Loan.LoanReceivable)

    <label>Interest</label>
    @Html.TextBoxFor(model => model.Loan.Interest, "{0:0,0.00}", new { @readonly = true, @class = "Interest", dir = "rtl", @data_bind = "value: interest" })

    <table class="input-group">
        <tbody data-bind="foreach: loanDeductions">
            <tr>
                <td><strong data-bind='text: deductionName'></strong></td>
                <td>
                    <input class="deductionCode form-control" data-bind='value: amount, valueUpdate: "afterkeydown"' /></td>
                <td><a href='#' data-bind='click: $parent.removeLine'>Delete</a></td>
            </tr>
        </tbody>
    </table>

    <button type="button" class="btn btn-danger">Save Deduction</button>

    <button type="submit" class="btn btn-primary">Save changes</button>
}

这是一个例子ajax帖子(不介意帖子的逻辑):

$.ajax({
 'url' :'@Url.Action("UpdateDeductionValues","LoanApp")',
 'data': {amount : $('.LoanAmount').val()},
 'success': function(result) {
 $.each(result, function (idx, items) {
 $('.' + items.Code + '').val(items.Amount.toFixed(2));
  });
  }});

现在我想要发生的是当我提交该表单时,如果提交成功,则会触发ajax帖子。所以它喜欢在一个按钮上发布2次,不同之处在于另一个是表单提交而另一个是ajax帖子。 PLS帮助。

2 个答案:

答案 0 :(得分:4)

你应该做的是&#34;接管提交按钮&#34;用你的jQuery,然后在里面使用ajax调用。

例如,有这个提交按钮:

<input type="submit" value="Submit" onsubmit="$('#your-form-id-here').submit()">

使用这个带有ajax调用的jQuery提交函数,应该会给你一个很好的想法。

$('#your-form-id-here').submit(function (e) {

    e.preventDefault();
    var senddata = $(this).serializeArray();
    var sendto = $(this).attr("action");

    $.ajax({
        url: sendto,
        type: 'POST',
        data: senddata,
        success: function (data) {
            $('.messages').html(data);
        },
        error: function (error) {
            $('.messages').html(error);
        }
    });
});

这基本上采用你的正常形式,并通过你的ajax调用发送到你的正常表单动作,所以基本上它就像正常一样工作,但你现在有机会在你的表单动作php文件中做东西,而且在你的ajax成功数据中。例如,您可以使用此功能直接向用户提供验证消息,而无需刷新您的网站。等等...

答案 1 :(得分:1)

我不确定你要做什么,在提交表单之后做ajax请求的重点是页面还会重新加载。

但是如果需要在提交表单后需要执行ajax请求,则只需要ajax调用。但是每当页面加载时它都会起作用。

我认为您需要做两个ajax请求,第一个是提交表单,如果调用成功,则调用第二个请求。