我想在点击按钮时更改用户状态,所以我所做的就是检测当前状态并根据需要进行更改。
但在这种情况下,更改后端的状态,但要显示页面需要刷新的状态,就像刷新时一样,它会检查当前状态并显示。所以我使用“window.location.reload”属性来显示页面上的最新状态
所有的东西在IE中运行良好。但在Firefox和Chrome的情况下,状态不会改变。我认为“window.location.reload”不起作用,因为当我只是评论这一行并尝试点击按钮并手动刷新页面时,它会显示更改状态。
您能否建议我应该使用什么来在Firefox和Chrome中使用它?
当我用Google搜索时,如果你在“setTimeout()”中给出它,我发现它可以在Firefox和Chrome中运行。我试过了,但即使这样它也不适合我。
<script>
$(document.body).on('click', '#activate', function () {
var pkgVersion = $(this).attr('data-version');
alert("@Url.Action("SetActivePackage", "Deployment")", { version: pkgVersion });
$.get("@Url.Action("SetActivePackage", "Deployment")", { version: pkgVersion }).done(function () {
});
setTimeout(function () { window.location.reload(data); }, 0);
});
</script>
请建议!
答案 0 :(得分:27)
我还有两个选择:
history.go(0);
和
window.location.href = window.location.href;
我还没有在Firefox和Chrome上测试它,但它可能会帮助你更快。明天我会做测试并更新答案,如果这不起作用。
答案 1 :(得分:26)
我在AngularJS和Firefox中遇到过这个问题。 (重新加载在Chrome中很好)。 通过使用setTimeout问题解决了。
setTimeout(function(){
window.location.reload();
});
答案 2 :(得分:10)
你试过这个吗?:
window.location = window.location;
显然你可以放弃“窗口”,但是我自己没试过。
答案 3 :(得分:2)
我在Chrome和Firefox中遇到了同样的问题。我能够通过让服务器响应页面的URL来缓解这个问题。对于您的情况,您可以将响应设置为用户状态的新值。以下是两个例子:
$.post('?action=' + myAction, function (data) {
window.location.href = data;
});
..和服务器响应
Response.Write("/yourUrl);
Response.End();
这消除了Chrome中的不一致性,并且页面重新加载时没有失败。
答案 4 :(得分:2)
Look this 您可以通过将forceGet参数设置为true来强制重新加载以从服务器获取页面:
location.reload(true);
答案 5 :(得分:1)
这对我和Fire Fox以及Crome及其在IE上工作正常。
object.reload(forcedReload);
答案 6 :(得分:0)
从我的角度来看,关键是我的功能位置必须高于呼叫发起的位置。认为浏览器从上到下解释javascript,如果我的重载代码低于调用它的对象,它就会失败。如果我把代码放在它上面,window.location.href = window.location.href;工作。
答案 7 :(得分:0)
我刚刚找到的巨型解决方案。
您必须模拟以发布空白表格。
HTML
Linguistic_Combos
JS
<form id="myForm" action='@Url.Action("Details","Main", new { id = @Model.ID } )'></form>