2011-10-09 7 views
0

저는 양방향 MVC 3 응용 프로그램을 가지고 있습니다. 드롭 다운 목록을 사용하여 드롭 다운 목록의 값을 쿠키 및 세션에 저장하여 언어를 변경합니다. 문제는 내가 그것을 릴리스 할 때, 그것은 IE에서만 작동합니다. 다음은 내 코드입니다. 참고 사항 : 사이트가 다시로드되고 Firefox 또는 Chrome을 닫고 Reponed했을 때 언어가 변경되었지만 FF 나 Chrome을 닫지 않으면 아무 일도 일어나지 않습니다. 당신의 도움을 주셔서 대단히 감사합니다. 나는 모든 종류의 조합을 $ .get, $. post 사용했습니다.jquery ajax 작품은 IE에서만 작동합니다

자바 스크립트 코드 :

$(function() { 
    $('#languagesDiv select').change(function() { 
     var myvalue = $(this).val(); 
     $.ajax({ 
      type: "POST", 
      dataType: "xml", 
      url: "/Language/SetLanguage", 
      data: { code: myvalue }, 
      success: function (data) { 
      }, 
      error: function (xhr, textStatus, errorThrown) { 
      } 
     }); 

     //    @* $.post('@Url.Action("SetLanguage", "Language")', { code: $(this).val() }, 
     //       function (result) { 
     //       } 
     //    );*@ 

     var myDate = new Date(); 
     myDate.setDate(myDate.getDate() + 21); 

     $.cookie('MyData', $(this).val(), { path: '/', expires: myDate }); 

     //window.location.reload(); 
     window.location.href = '/News/Index'; 
    }); 
}); 

C# 코드 :

//tested with and without [httppost] 
public void SetLanguage(string code) 
{ 
    if (Session["MyCulture"] != null && Convert.ToString(Session["MyCulture"]) != code) 
    { 
     Session["MyCulture"] = code; 
     HttpCookie aCookie = Request.Cookies["MyData"]; // new HttpCookie("MyData"); 
     aCookie.Value = code; 
     //HttpCookie aCookie = Request.Cookies["LangCookie"]; 
     aCookie.Expires = System.DateTime.Now.AddDays(21); 
     Response.Cookies.Add(aCookie); 
     //Response.AppendCookie(aCookie); 
    } 

    //return RedirectToAction("Index", "News");   
} 

이 다시 한번 감사드립니다.

+0

질문의 형식을 올바르게 지정하십시오. –

답변

3

내가 아는 문제 (백엔드가있는 다른 사람들이있을 수 있음)는 AJAX 요청이 다른/새로운 브라우저에서 완료되지 않을 가능성이 높습니다. 이를 호출 할 때 :

window.location.href = '/News/Index'; 

은 ... 다른 페이지로 이동 브라우저를 이야기하고, 이것은 즉시가 완료되었는지 이전 AJAX 요청이 (브라우저 가능성이 요청을 죽일 여부에 관계없이이가는 의미합니다 일찍 그리고 계속 나아 간다.

대신, 다음과 같이, 그 요청이 완료를 리디렉션하고 success 처리기에서 리디렉션을 수행해야합니다

$(function() { 
    $('#languagesDiv select').change(function() { 
    var myvalue = $(this).val(); 
    $.ajax({ 
     type: "POST", 
     dataType: "xml", 
     url: "/Language/SetLanguage", 
     data: { code: myvalue }, 
     success: function (data) { 
     var myDate = new Date(); 
     myDate.setDate(myDate.getDate() + 21);  
     $.cookie('MyData', $(this).val(), { path: '/', expires: myDate }); 

     window.location.href = '/News/Index'; 
     } 
    }); 
    }); 
}); 

이 방법을 사용하면 후에 만 ​​페이지를 변경하는 사용자를 말하는거야 의 언어 변경 요청을 받았습니다.

+0

대단히 감사합니다. – user217648

관련 문제