2012-04-03 72 views
0

我正在使用ASP.NET MVC 3網站,並且本地版本上的所有內容都可以正常工作,但是當我將其上載到雲時,登錄過程不會' t按預期工作。這裏是我的登錄操作: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的電話:

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

在本地主機上它按預期工作:成功,它重定向到主頁。但是,在雲端,實時版本中,它只顯示JSON結果,而不是呈現HTML頁面。我試過一切可能的東西。有其他人處理這個問題嗎?

+1

它打到你的錯誤處理程序,並顯示在警告框中的JSON結果?還是用JSON結果替換頁面內容?無論如何,如果您使用Fiddler或類似工具追蹤迴應並比較差異,這將會很有幫助。 – 2012-04-03 20:09:29

+0

它擊中成功函數,而不是重定向,它用JSON結果替換頁面內容。到現在爲止你有沒有遇到這種行爲? – Kyprulez 2012-04-05 08:04:01

+0

我想不出有什麼特別的事情可以做到。您可以使用Fiddler找到一些內容,並比較您從本地主機獲取的響應與實況網站上的響應。我的直覺是它可能涉及響應的內容類型,但我可能很容易出錯。 – 2012-04-05 14:34:46

回答

0

您需要發表更多的代碼。

我相信你根本不會取消表單提交。我看到你的代碼中有'data':$(「#login_form」)。serialize()',當你的描述和你的描述相結合時,就會認爲這是問題所在。

我不認爲你甚至打電話給你的AJAX。

+0

AJAX被調用。只是在服務器上,它只是返回JSON字符串。但是,我修正了它。問題在於該操作被聲明爲返回一個ActionResult,並將其更改爲JsonResult。現在它工作正常 – Kyprulez 2012-04-13 06:53:22