knockoutJS - 提交两次的ajax表格

时间:2013-05-24 14:55:32

标签: javascript jquery knockout.js form-submit double-submit-problem

我有一张提交两次的表单。

我查看过类似的与jQuery相关的问题herehere以及Google群组here,但未能找到解决方案。

因为我是Knockout.js的新手,也许我错过了一些明显的东西?我想知道为什么会这样。这就是我所拥有的:

形式:

<form data-bind="submit: Save">
 <div class="span11">
@foreach (var prop in ViewData.ModelMetadata.Properties)
{      
  @Html.Label(prop.PropertyName, new { @class = "attribute-label" })
  @Html.TextBox(prop.PropertyName, "", new { data_bind = "value: " + prop.PropertyName + "" })

}

</div>
<br />
<button type="submit" class="btn" data-bind="enable: IsEnabled">Update                    
</button>
</form>

viewmodel:

var viewModel = @Html.Raw(Json.Encode(Model));

viewModel.Save = function() {            

        $.ajax({
            url: '@Url.Action("UpdateEmployee")',
            contentType: 'application/json; charset=utf-8',
            type: "POST",
            data: ko.toJSON({ employee: viewModel }),

            success: function(result) {
                //...

            },

            error: function(xhr, ajaxOptions, thrownError) {
               //...

            }
        });

    };

    $(function() {

        ko.applyBindings(viewModel);

    });

1 个答案:

答案 0 :(得分:1)

鉴于您向我们展示的代码,没有理由提交两次。可能发生的事情是你有一些被调用的其他代码明确调用Save()函数,这使得它似乎提交了两次。

我写了一个小提琴来模仿你所展示的内容,它没有你所描述的相同问题。

fiddle