我有一个mvc2应用程序,有这样的视图
<% using (Ajax.BeginForm("UserApprove", new { id = Model.id }, new AjaxOptions() { UpdateTargetId = "statusLights", OnSuccess = "HideButtons" }, new { id = "UserApprove" }))
{%>
<input type="button" value="Approve" onclick="$('#dialogApprove').dialog('open')" />
<div id="dialogApprove" title="Confirm">
<p>
Are you sure you want to approve this request?
</p>
</div>
<% } %>
仅供参考,控制器返回部分视图。
我以前没有jquery对话框,只是简单的
<input type="Submit" value="Approve" />
过去工作正常
我添加了jquery对话框,我有类似的东西来初始化对话框。
$("#dialogApprove").dialog({
autoOpen: false,
draggable: true,
resizable: false,
buttons: {
"Cancel": function() {
$(this).dialog("close")
},
"Approve": function() {
$("#UserApprove").submit();
$(this).dialog("close");
}
}
});
$(“#UserApprove”)。submit();似乎没有做ajax帖子。它只返回新页面中返回的局部视图中的文本。
我不想使用具有.ajaxSubmit()的jquery表单插件。有没有其他方法可以从jquery对话框“批准”按钮强制ajax帖子?
答案 0 :(得分:1)
"Approve": function() {
var form = $('#userapprove');
$.post(form.attr('action'), form.serialize());
$(this).dialog("close");
}
答案 1 :(得分:1)
$.ajax({
type: $("#UserApprove").attr("method"),
url: $("#UserApprove").attr("action"),
data: $("#UserApprove").serialize(),
success: function(data, textStatus, XMLHttpRequest) {
$("#SomeDiv").html(data); //replace the reports html.
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert("Yikers! The AJAX form post didn't quite go as planned...");
}
});
确保使用partial来呈现数据,并使用Request.IsAjaxRequest()将数据发送到partial。
有关更完整的代码,请参阅我的帖子here。
答案 2 :(得分:1)
尝试:
$("#dialogApprove").dialog({
autoOpen: false,
draggable: true,
resizable: false,
buttons: {
"Cancel": function() {
$(this).dialog("close")
},
"Approve": function() {
$.post($("#UserApprove").attr('action'), $("#UserApprove").serialize(),
function(result) {
// result will be your partial view
$(this).dialog("close");
}
);
}
}
});
这将发布您的表单并返回回调中的局部视图。 `
答案 3 :(得分:1)
如果您想坚持使用MVC Ajax帮助程序,则应该向AjaxOptions添加Confirm消息。这将使用标准的javascript确认对话框来显示您的消息,并且只有在确认操作后才会继续。如果你想使用jQuery UI对话框,那么我建议使用普通表单,并使用“Approve”按钮处理程序中的.ajax()
或.post()
提交对话框。基本上,您将编写与助手方法插入的相同的代码,以便使用AJAX执行帖子,然后使用返回的HTML替换目标的内容。