【问题标题】:Javascript reload() not workingJavascript重新加载()不起作用
【发布时间】:2012-05-31 16:09:45
【问题描述】:

我到处搜索看看,因为有这么多人问这个问题,但无论如何,我不断收到undefined..

function remove_item(itemid) {
    var window = top.location;
    var host = window.host;

    $.ajax({
        url: "http://"+host+"/backend/remove_lockbox.php?id="+itemid,
        success: function() {
            $(document).ajaxStop(function(){
                window.top.location.reload();
            });
        }
    });
}

这是我的代码。我尝试了window.location.reloadhost.location.reload...我尝试了所有方法,但我不断收到undefined...位置的父级始终是undefined,无论是windowhostwindow.top,任何东西。 有人可以帮我吗?

【问题讨论】:

  • window.top.location.reload(); 没有错,但真的吗? var window = top.location;?好像不对。
  • 另一种方式 window.top.location = window.top.location
  • 使用document.location = document.location
  • 什么是“未定义”?嗯?您不应该使用名为 window 的变量!
  • 德里克是对的。我不得不删除我一开始设置的 window = 变量。

标签: javascript function reload


【解决方案1】:

所以你在做

 var window = top.location;

比你做的还多

 window.top.location.reload();

所以你实际上是在说

top.location.top.location.reload();

为什么要使用一个名为 window 的变量,因为它已经定义并且具有不同的含义?那很不好。

如果您使用的是框架,我希望看到类似的东西

parent.location.reload(true);

或者只是一个普通的旧窗口

window.location.reload(true);

【讨论】:

  • 你不能覆盖window,仅供参考。
【解决方案2】:

尝试这种方式,它在 chrome 中运行良好,因为我知道这应该在所有现代浏览器中运行良好。

function remove_item(itemid) {

    var host = window.location.host;

    $.ajax({
        url: "http://"+host+"/backend/remove_lockbox.php?id="+itemid,
        success: function() {
            $(document).ajaxStop(function(){
                window.location.reload();
            });
        }
    });
}

这是window.locationwindow.location.hostwindow.location.reload 的工作示例。

http://jsbin.com/apemen/3

【讨论】:

    猜你喜欢
    • 2013-09-04
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 2017-12-29
    • 2016-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多