7

次のような Ajax リクエストを作成しています。

 $(".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;
});

サーバー側では、次のようなコードを実行しました。

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

Ajax POST は正常に動作します。Mozilla の Web Developer Tools で確認できますが、想定どおりにページが他のページにリダイレクトされません。誰が私が間違っているのか教えてもらえますか?

Response.Redirectそれとも、Ajax 経由で呼び出すことはできませんか?

4

2 に答える 2

12

ええ、私の知る限り、クライアント側からのリダイレクトを単純に検出することはできません。次のような他の回答を参照してください。

できることの 1 つは、サーバー側コードからのリダイレクトを示す何かを返す方法です。次の JSON のようなもの:

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

サーバー側のコードで上記をどのように達成するかは、あなた次第です。

次に、クライアント側のコードで次のことができます。

  $.ajax({
    type: "POST",
    url: pathname,
    data: data,
    success: function(data) {
      if(data.redirect) {
        window.location = data.redirectURL;
      }
    },
于 2013-11-04T06:37:36.823 に答える
6

WebMethod で Response.Redirect を呼び出すことはできません。代わりに使用できます

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

ajax 成功関数で。

ページ名が本質的に動的である場合は、webmethod から pagename を返し、それを使用してページをリダイレクトします。

于 2013-11-04T06:34:49.187 に答える