我正在实施一个简单的CRUD操作。我有表中显示的数据列表,具有添加编辑和删除功能。在Jquery对话框中添加编辑和删除操作
当我尝试添加新记录时,我将Json结果返回为Success True / false,具体取决于表单数据条目。
这是我的代码
[HttpPost]
public ActionResult AddUser(AddCEQRUser addUserInfo)
{
// perform insert operation
if (ModelState.IsValid && InsertSuccess)
return Json(new { success = true }, JsonRequestBehavior.AllowGet);
else
return Json(new { success = false }, JsonRequestBehavior.AllowGet);
}
添加
的部分视图@using (Html.BeginForm("AddUser", "Admin", FormMethod.Post, new { id = "addUserForm" }))
{
@Html.AntiForgeryToken()
<fieldset>
<table class="headertable">
// form elements
<tr>
<td align="center" colspan="2">
<button name="button" value="SubmitUser" class="button" id="btnSubmitUser">
Submit
</button>
<button name="button" value="CancelAddUser" class="button" id="btnCancel">
Cancel
</button>
</td>
</tr>
</table>
</fieldset>
}
Ajax调用Submit按钮
$('#btnSubmitUser').click(function () {
$.ajax({
url: '@Url.Action("AddUser", "Admin", new { Area = "PrivateCEQRApplication" })',
type: 'POST',
dataType: 'json',
cache: false,
headers: headers,
data: {
FirstName: $('#txtFirstNameAdd').val(),
MiddleName: $('#txtMiddleNameAdd').val(),
LastName: $('#txtLastNameAdd').val(),
EmailAddress: $('#txtEmailAddressAdd').val(),
UserRole: $('#ddlUserRoleSelectedAdd').val()
},
beforeSend: function (xhr, settings) { xhr.setRequestHeader('__RequestVerificationToken', token); },
success: function (data) {
if (data.success) {
alert("The user has been added.");
$(".ui-dialog-content").dialog().dialog("close");
}
else {
//error handling
}
},
error: function (xhr, textStatus, errorThrown) {
alert("There was a problem with the operation. Please try again" + "Status: " + textStatus + "Error: " + errorThrown);
}
});
});
无论是否出现错误,单击“提交”按钮,我都会获得一个带有{success:true}的json文件,以便通过IE下载。 我已经阅读了很多关于这个以及如何设置Content type application / json或text / html的文章
如果我将内容类型设置为application / json,我仍然会提示下载,如果我设置了text / html,则会打开一个新页面,其中{success:true}。
我也注意到我放了e.preventDefault();在我的btnSubmitUser点击事件中,我没有得到提示下载但是我放松了错误处理。
我想要的是通过执行此代码,如果没有错误(json成功为真),则关闭对话框
alert("The user has been added.");
$(".ui-dialog-content").dialog().dialog("close");
并通过执行json success false block显示错误。
非常感谢您的帮助。
由于
答案 0 :(得分:0)
正如Adeneo所说,你必须阻止表单提交的默认操作以允许javascript完成。您可以通过添加event.preventDefault();
作为函数的第一行(位于$('#btnSubmitUser').click(function () {
下方)或使函数返回false来执行此操作。