2016-07-13 11 views
0

私はaction属性を持たないasp.netフォームを持っています。そしてsubmitはajaxによって次のように処理されます。aspページを別のURLにリダイレクトする

コードで
$.ajax({ 
       url: "home2.aspx/DoSubmit", 
       type: "POST", 
       contentType: "application/json; charset=utf-8", 
       data: '{x: "' + $("#x").val() + '",y: "' + $("#y").val() + '"}', 
       dataType: "json", 
       success: function (result) 
       { 
        alert("success..."); 
       }, 
       error: function (xhr, status) { 
        alert("Error", status); 
       } 
      }); 
      return false; 
     }); 

の背後にあるAJAX呼び出しのために、関連する応答を提供した後、私はバックエンドでそこにいた他のパラメータを持つ別のURL(たとえ異なるドメイン)にasp.netページをリダイレクトします。私はこのメソッドをテストし、HttpWebRequestを作成しますが、動作させません。

var postData = (requestParam.ToString()); 
      var data = Encoding.ASCII.GetBytes(postData); 
      HttpWebRequest request; 
      try 
      { 
       request = (HttpWebRequest)HttpWebRequest.Create("https:someDomain"); 
      } 
      catch (UriFormatException) 
      { 
       request = null; 
      } 
      request.Method = "POST"; 
      request.ContentType = "application/x-www-form-urlencoded"; 
      request.ContentLength = data.Length; 
      Stream postStream = request.GetRequestStream() 
      postStream.Write(data, 0, data.Length); 
      postStream.Flush(); 
      postStream.Close(); 

この原因このエラー:リモートパーティがトランスポートストリームを閉じたので認証に失敗しました。
ありがとうございました

+0

エラーが発生するのは、どのラインですか?あなたは既にあなたがAJAXの呼び出し元に戻ってきていると言っていますが、戻ってからさらに処理していますか? –

答えて

2

ajaxコールは、ブラウザからOOB(帯域外)です。これは、ブラウザのナビゲーション機構に絶対にゼロの接続を持っています。したがって、リダイレクトは機能しません。

ajaxの成功(および/または失敗)イベントに登録する必要があります。その場合、任意の数のブラウザのナビゲーション方法(例:window.location)でリダイレクトクライアント側を行います。

リダイレクトURLをサーバーから取得する必要がある場合は、アクションをajaxレスポンスの一部として戻します。

関連する問題