2012-04-03 19 views
0

ASP.NET MVC 3 Webサイトで作業していて、すべてローカルバージョンで正常に動作しますが、クラウドにアップロードすると、期待どおりに動作します。ここに私のログインアクションです:jQuery AJAXリクエストでJSON文字列が返され、Windows Azureでリダイレクトされない

[AcceptVerbs(HttpVerbs.Post)] 
    public ActionResult Login(string username, string password) 
    { 
     password = Project_0._1._1.Cloud_Platform.Methods.Encrypt(password); 

     REST_Auth.REST_AuthResponse loginResponse = REST_Auth.GetAuthToken(username, password, Project.Instance.AdModule.DeviceID); 

     if (loginResponse.ErrorID != "AUTH00002") 
     { 
      HttpCookie _username = new HttpCookie("username"); 
      HttpCookie _password = new HttpCookie("password"); 
      HttpCookie _token = new HttpCookie("token"); 
      HttpCookie _userID = new HttpCookie("userID"); 
      _username.Value = username; 
      _password.Value = password; 
      _token.Value = loginResponse.Token; 
      _userID.Value = loginResponse.UserID; 

      this.ControllerContext.HttpContext.Response.Cookies.Add(_username); 
      this.ControllerContext.HttpContext.Response.Cookies.Add(_password); 
      this.ControllerContext.HttpContext.Response.Cookies.Add(_token); 
      this.ControllerContext.HttpContext.Response.Cookies.Add(_userID); 
     } 

     return Json(loginResponse); 
    } 

そしてここでjQueryのコールです:成功すると、それはホームページにリダイレクトします。それは期待どおりに動作localhostをオン

$.ajax({ 
     type: "POST", 
     url: "login", 
     data: $("#login_form").serialize(), 
     dataType: 'json', 
     beforeSend: function() { 
      $("#login_fields").fadeOut(300); 
      if ($("#lresponse")) 
       $("#lresponse").remove(); 
     }, 
     success: function (data, textStatus, jqXHR) { 
      if (data.ErrorID == "AUTH00002") { 
       $("#login_fields").fadeIn(500); 
       $("#login_fields").append("<span id='lresponse'>Invalid login details. Try again</span>"); 
      } 
      else { 
       $("#login_fields").fadeIn(500); 

       window.location = "/"; 
      } 
     }, 
     error: function (error) { 
      alert(error); 
     } 
    }); 

。しかし、クラウド上では、ライブバージョンでは、HTMLページをレンダリングする代わりにJSON結果を表示するだけです。私は可能な限りすべてを試みました。他の誰かがこの問題に対処していますか?

+1

エラーハンドラを起動し、JSON結果をアラートボックスに表示しますか?それとも、ページの内容をJSONの結果に置き換えるのですか?いずれにしても、Fiddlerまたは類似のツールを使用して応答をトレースし、その差異を比較すると役立ちます。 –

+0

成功関数をヒットし、リダイレクトする代わりに、ページの内容をJSON結果に置き換えます。今までこのような行動に遭遇しましたか? – Kyprulez

+0

私はそれをする具体的なことは考えられません。あなたはFiddlerを使って何かを見つけて、実際のサイトでlocalhostとレスポンスから得た応答を比較するかもしれません。私の感想は、レスポンスのContent-Typeが関与するかもしれないということですが、私はそれについて簡単に間違っている可能性があります。 –

答えて

0

コードを投稿する必要があります。

私はフォーム提出をキャンセルしていないと思います。私はあなたが 'data:$( "#login_form")。serialize()をコード内に持っているのを見ています。あなたの記述と組み合わせると、これが問題だと思われます。

私はあなたのAJAXに電話したことはないと思います。

+0

AJAXが呼び出されました。ライブサーバー上のJSON文字列を返すだけです。しかし、私はそれを修正しました。問題は、アクションがActionResultを返すと宣言されていて、それをJsonResultに変更したことでした。今それは適切に動作します – Kyprulez

関連する問題