jQuery表单提交时出现浏览器警告
我正在使用MVC3开发一个网站,当用户在主页选择列表中选择首选语言时,以下代码将处理该事件。它将读取选择列表的值并将其保存到cookies。最后,我将提交表单以便回发页面jQuery表单提交时出现浏览器警告,jquery,asp.net-mvc-3,post,form-submit,Jquery,Asp.net Mvc 3,Post,Form Submit,我正在使用MVC3开发一个网站,当用户在主页选择列表中选择首选语言时,以下代码将处理该事件。它将读取选择列表的值并将其保存到cookies。最后,我将提交表单以便回发页面 $(document).ready(function () { $('#lang').change(function () { var languageId = $('#lang').val(); document.cookie = 'culture=' + languageId;
$(document).ready(function () {
$('#lang').change(function () {
var languageId = $('#lang').val();
document.cookie = 'culture=' + languageId;
$('#postback').submit();
});
});
现在的问题是浏览器在我重新加载页面时不断警告我
$(document).ready(function () {
$('#lang').change(function () {
var languageId = $('#lang').val();
document.cookie = 'culture=' + languageId;
$('#postback').submit();
});
});
chrome说:
您正在查找输入的已用信息的页面。
返回到该页面可能会导致重复您采取的任何操作。
你想继续吗
firefox说:
要显示此页面,Firefox必须发送以下信息:
将重复任何操作(如搜索或订单确认)
这是早些时候执行的
原因是什么?如何解决呢
编辑
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);
}
这是我在控制器中的操作
[HttpPost]
public ActionResult ChangeCulture(string culture, string returnUrl)
{
Session["CultureInfo"] = new CultureInfo(culture);
Response.Cookies["culture"].Value = culture;
Response.Cookies["culture"].Expires = DateTime.UtcNow.AddYears(1);
if (Request.IsAjaxRequest())
{
return new EmptyResult();
}
else
{
return Redirect(returnUrl);
}
}
当您提交表单时,您会被重定向到一个新页面,该页面是
POST
ed上一页的内容。如果没有POST
ed的表单内容,该页面将不存在。因此,尝试返回该页面将需要将相同的数据重新POST
ed到该页面
要解决这个问题,您需要克服
POST
ing到该页面的问题,最有可能是Ajax请求。您的控制器函数在做什么?如果您只是返回视图
,您可以返回重定向到操作
,如果您想留在该页面上。尝试在$(“#回发”)之前执行$(“#回发”)重置()
。提交()
(如果cookie是您唯一感兴趣的内容)只要在收到该消息时点击continue,相同的数据将被重新发布。不过Ajax肯定更优雅。Ajax的目的是让响应异步,然后自己更新页面。使用位置是您自己的选择。