当用户点击超链接时,我想运行后台进程。在我运行之前,我想使用jQuery对话框(表单)询问用户的权限。当用户在表单上单击“确定”时,我想使用jQuery ajax运行该操作。如果进程失败,那么我想用“错误”更新该弹出窗口。我如何使用jQuery AJAX在asp.net MVC中执行此操作。以下是我试过的代码
这是我的MVC Ajax开始表单代码
@using (Ajax.BeginForm("Action1", "Controller1", new AjaxOptions { UpdateTargetId = "eProcess" }, new { id = "eProcess" }))
{
@Html.Hidden("eID", eId);
@Html.Hidden("processName", "processName");
<div class="hide" id="dialog" title="Confirmation Required">
Are you sure you want to update this record? <br />
<input type="button" value="Hit" id="btnHit" />
</div>
}
以下是我的对话框代码
$("#dialog").dialog
({
dialogClass: "ee-detail-info",
closeOnEscape: false,
height: 200,
width: 300,
modal: true,
autoOpen: false,
open: function (event, ui) {
$("#btnHit").click(function () {
$('#processName')[0].value = processName;
document.forms.eProcess.submit();
});
}
});
我甚至尝试过使用.ajax方法,但仍在使用完整的帖子。我仔细检查了我的jQuery文件。它们在页面上正确链接。
$("#eProcess")[0].submit(function () {
$.ajax({
url: $("#eProcess")[0].action,
success: function (res) {
alert("Success");
}
});
});
我使用了您的解决方案。我的代码中有错误。
答案 0 :(得分:2)
我仔细检查了我的jQuery文件。它们在页面上正确链接。
确保在jquery之后包含了jquery.unobtrusive-ajax.js
脚本。
如果是这种情况,则无需手动订阅任何.click事件。只需离开Ajax.BeginForm
即可发送AJAX请求。
如果您不想依赖Ajax.BeginForm
,那么只需写一个普通的表格:
@using (Html.BeginForm("Action1", "Controller1", FormMethod.Post, new { id = "eProcess" }))
{
@Html.Hidden("eID", eId);
@Html.Hidden("processName", "processName");
<div class="hide" id="dialog" title="Confirmation Required">
Are you sure you want to update this record? <br />
<input type="button" value="Hit" id="btnHit" />
</div>
}
然后:
$(function() {
$("#dialog").dialog({
dialogClass: "ee-detail-info",
closeOnEscape: false,
height: 200,
width: 300,
modal: true,
autoOpen: false
});
$('#dialog').on('submit', '#eProcess', function() {
// here you could set the value of the the hidden field
// if you wanted to pass some additional information
// to the controller
$.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
success: function(result) {
$('#eProcess').html(result);
}
});
return false;
});
});