7

I am making an Ajax request like this:

 $(".box01 .selproduct").live("click", function(e) {
    var color = $(this).parent('.box01').find('.color').val();
    var size = $(this).parent('.box01').find('.size').val();
    var pid=$(this).parent('.box01').find('.hdinput').val();
    var pathname = window.location.pathname;
    var data = { submit: "selected",size:size,color:color,pid: pid};
    $.ajax({
        type: "POST",
        url: pathname,
        data: data,
        success: function(data) {

        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {

        },
        complete: function(data) {

        }
    });
    return false;
});

And in the server side I have done some code like this:

 if (!string.IsNullOrEmpty(HttpContext.Current.Request.QueryString["pid"]))
    {
        var path = HttpContext.Current.Request.Url.AbsolutePath;
        HttpContext.Current.Response.Redirect(path);
    }

Ajax POST works fine. I can see in Web Developer Tools in mozilla but page is not redirected to other page as I supposed. Can any one tell me what I am doing wrong?

Or Is it not possible to call Response.Redirect through Ajax?

nicolascolman
  • 549
  • 4
  • 15
None
  • 5,582
  • 21
  • 85
  • 170
  • 2
    By the way live is depreceated, you should use on http://api.jquery.com/live/ – adt Nov 04 '13 at 07:04

2 Answers2

12

Yeah, to my knowledge you can't simply detect the redirect from the client-side. Reference other answers like these:

One thing you can do is how return something that indicates a redirect from your server-side code. Something like the following JSON:

{
  success: true,
  redirect: true,
  redirectURL = "http://something.com/path/to/good/stuff"
}

How you achieve the above in your server-side code is up to you.

Then in your client-side code you can do the following:

  $.ajax({
    type: "POST",
    url: pathname,
    data: data,
    success: function(data) {
      if(data.redirect) {
        window.location = data.redirectURL;
      }
    },
Community
  • 1
  • 1
Patrick Jones
  • 1,896
  • 14
  • 26
6

It is impossible to call Response.Redirect in WebMethod. Instead you can use

 success: function(data) {
     window.location.href="path.aspx";
        }

in ajax Success function.

If the page name is dynamic in nature return pagename from webmethod and use it to redirect the page.

Subin Jacob
  • 4,692
  • 10
  • 37
  • 69