查看:
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Index</h2>
<script type="text/javascript">
$(document).ready(function() {
$(document).ready(function() {
$("#example").submit(function() {
var id = $("#id").val();
var prezime = $("#prezime").val();
$.post("/jQueryPost/PostingData", { id: id, prezime: prezime }, function(res) {
if (res.redirect) {
window.location.href = res.redirect;
return;
}
}, "json");
return false;
});
});
</script>
<form id="example" method = "post">
Id:<input id="id" type="text" />
Prezime:<input id="prezime" type="text" />
<p>
<input type="submit" value="Post Data" />
</p>
</form>
</asp:Content>
控制器操作:
[HttpPost]
public ActionResult PostingData(int id, string prezime)
{
//some code
return Json(new { redirect = Url.Action("Create") });
}
Tnx,这段代码解决了我的问题
答案 0 :(得分:11)
不是返回AJAX请求无法处理的重定向,而是将URL作为JSON返回,让post处理程序更改位置。
$.post("/jQueryPost/PostingData", { id: id, prezime: prezime }, function(data) {
location = data.url;
});
[HttpPost]
public ActionResult PostingData(int id, string prezime)
{
//some code
return Json( new { url = Url.Action( "Create" ) } );
}
答案 1 :(得分:2)
重定向不起作用的原因是因为您正在执行异步请求。包含重定向代码的响应仅作为数据返回到success方法,您可以忽略它。
相反,只需发布您在页面中的表单:
$('#example').attr('action', '/jQueryPost/PostingData/').submit();
答案 2 :(得分:0)
控制器
public ActionResult DeleteMenuItem(int id)
{
_menuService.DeleteMenuItemById(id);
return Json(new { url = Url.Action("Index","Menu") }, JsonRequestBehavior.AllowGet);
}
查看
$.getJSON( "/Menu/DeleteMenuItem", { id: parseInt(id)}, function(data) {
location = data.url;
} );