knockoutJS - ajax表单提交两次



我有一个表单被提交了两次。

我已经看过类似的jquery相关的问题在这里和这里和谷歌组在这里,但还没有能够找到一个解决方案。

因为我是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);
    });

给定您给我们看的代码,它没有理由提交两次。可能发生的情况是,你调用了其他一些代码,显式地调用了Save()函数,这使得它看起来提交了两次。

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

小提琴

最新更新