MVC 3を使用してWebサイトを開発しています。ユーザーがホームページ選択リストで言語を選択すると、次のコードでイベントが処理されます。選択リストの値を読み取り、それをクッキーに保存します。最後に、ページをポストバックするためにフォームを送信します。jQueryフォームブラウザで警告を送信
$(document).ready(function() {
$('#lang').change(function() {
var languageId = $('#lang').val();
document.cookie = 'culture=' + languageId;
$('#postback').submit();
});
});
ページをリロードすると、ブラウザの問題が表示されます。
クロム言う:
あなたが入力した情報を使用しているページ。 そのページに戻ると、繰り返し実行されたアクションが発生する可能性があります。 続行しますか?
Firefoxは言う:
このページを表示するには、Firefoxは 以前行った(そのような検索や注文確認など)任意のアクション を繰り返すことになりますという情報を送信する必要があります。
何故ですか?どのようにそれを解決するには?
EDIT
public ViewResult Index()
{
int languageId = LocalizationHelper.TryGetCookiesLanguageId();
LoginPageViewModel model = new LoginPageViewModel
{
LanguageId = languageId,
Languages = Mapper.Map<IEnumerable<SvcLanguageList>, IEnumerable<Language>>(new[]{
new SvcLanguageList{ LanguageId = 1, LanguageName="English" },
new SvcLanguageList{ LanguageId = 2, LanguageName="简体中文" },// Simplified Chinese
new SvcLanguageList{ LanguageId = 3, LanguageName="繁體中文" },// Traditional Chinese
})
};
return View(model);
}
EDIT 2
私はfollwingに私のjqueryのコードを変更しました:
$(document).ready(function() {
$('#lang').change(function() {
$('img#loading').show(800);
var culture = $('#lang').val();
$.ajax({
url: '@Url.Action("ChangeCulture", "Account")',
type: 'POST',
data: JSON.stringify({ culture: culture }),
datatype: 'json',
contentType: 'application/json;charset=ascii',
success: function (data) {
window.location = '/';
}
});
});
});
、ここでは、コントローラ
の私の行動であります
$( '#postback')の前に '$(" postback ')。reset() 'を実行してみてください(あなたが興味を持っているのはクッキーだけです) – Rodolfo