使用jQuery发布数据并重定向到另一个操作

时间:2010-06-29 11:56:55

标签: asp.net-mvc

查看:

<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,这段代码解决了我的问题

3 个答案:

答案 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;
} );