Reputation: 1195
View:
<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>
Controller action:
[HttpPost]
public ActionResult PostingData(int id, string prezime)
{
//some code
return Json(new { redirect = Url.Action("Create") });
}
Tnx, this code solve my problem
Upvotes: 2
Views: 18515
Reputation: 1
controller
public ActionResult DeleteMenuItem(int id)
{
_menuService.DeleteMenuItemById(id);
return Json(new { url = Url.Action("Index","Menu") }, JsonRequestBehavior.AllowGet);
}
View
$.getJSON( "/Menu/DeleteMenuItem", { id: parseInt(id)}, function(data) {
location = data.url;
} );
Upvotes: 0
Reputation: 700910
The reason that the redirect doesn't work is because you are doing an asynchronous request. The response that contains the code for the redirection is just returned as data to the success method, where you ignore it.
Instead, just post the form that you have in the page:
$('#example').attr('action', '/jQueryPost/PostingData/').submit();
Upvotes: 2
Reputation: 532755
Instead of returning a redirect, which the AJAX request can't handle, return the URL as JSON and let the post handler change the location.
$.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" ) } );
}
Upvotes: 11