控制器的HttpPost动作被击中两次

以下是我的应用程序中的确切方案。

一只忙碌的猫

我相信这张照片清楚地解释了这个问题。 如果您对此有任何疑问,请告诉我。

问题是HttpPost操作被调用两次导致在数据库中添加两个条目。

如何防止这2个动作?

问题是因为每次单击按钮时都会向表单添加一个submit()处理程序,因此第二次提交表单时,它会两次点击您的操作,第三次点击表示三个post,依此类推。

要解决此问题,请修改代码以挂钩提交按钮的click()或表单的submit() 。 我的偏好是表单提交。 试试这个:

 $("form").submit(function(e) { e.preventDefault(); $.ajax({ url: 'EditEntryInline', type: 'POST', data: $(this).serialize(), success: function(result) { if (result.success) { window.location.reload(); } else { // inform the user that the save didn't work } } }); }); 

此外,您可能应该修改您的选择器以使用id以便此代码不会连接到页面上显示的每个表单的submit()事件。

您将在实际表单提交中连接另一个 ajax提交。 考虑把return false; 在末尾。