JQuery将同一页面加载到div中

时间:2013-07-01 09:11:59

标签: jquery

全部,我知道我们可以使用load方法将动态内容加载到div中。 但就我而言,我在使用它时发现了一个问题。 如果要在完全相同的页面中加载包含一些外部js文件的同一页面。你会发现相同的js将加载两次。一个是第一次打开页面,第二个是当ajax加载同一页面时。所以我认为这个案例会存在一些潜在的问题。例如,如果你在js文件中初始化的JavaScript中为变量设置一个值,在加载页面后,你会发现它将被恢复为初始值。我能找到的解决方案之一是使用IFrame,是否有有什么好办法吗?感谢。

代码如下所示。

test.html中的

<html>
<head>
    <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
    <script src="test.js"></script>
    <script type="text/javascript">
        $(function(){
            $("#loadBtn").on("click", function(event)
            {
                $('#container').load('test.html');
            });

            $("#getTest").on("click", function(event)
            {
                alert(test);
            });

            $("#changeTest").on("click", function(event)
            {
                test="changed";
            });
        });
    </script>
</head>
<body>
        <div id="container" style="width:200px;height:200px; padding:10px; border:1px solid black;"></div>
        <input type="button" id="loadBtn" value ="Load"/>
        <input type="button" id="getTest" value="gettest"/>
        <input type="button" id="changeTest" value="changetest"/>
</body>
</html>

在test.js

var test="1";

4 个答案:

答案 0 :(得分:1)

我相信您只能通过在加载函数中添加另一个特定div来加载页面的某些内容,如下所示:

$("#area").load("something.html #content");

答案 1 :(得分:0)

只需更改所用变量的名称,即标识符不会发生冲突。 无论如何,我真的不明白你为什么要在同一页面内加载页面。如果您只想异步重新加载页面,那就不是这样做了。

尝试location.reload()

答案 2 :(得分:0)

执行此操作的方法是添加检查以查看是否已加载此文件。像这样:

if (!window.testjs){
   window.testjs = {};
}

if (!window.testjs.loaded) { 
    var test="1"; 
    window.testjs.loaded = true; 
}

这种方法虽然有弱点。它将更多的命名空间和变量放入全局。但是当您创建命名空间时,命名冲突的可能性会降低。

答案 3 :(得分:0)

如果要基于每个请求控制缓存,则必须使用更复杂的函数,如$ .ajax()。或者,如果您只想将其关闭,请将其放在脚本的顶部:

$.ajaxSetup ({
    // Disable caching of AJAX responses
    cache: false
});

我发布了另一个解决您问题的问题的回复。 请参阅:Stop jQuery .load response from being cached

简而言之,您应该使用$ .ajax({...}),或者如果您想继续使用$(“...”)。load(),您需要为您的URL传递时间戳,如: http://example.com?ts=12233232323 如果您获得类似上述网址的内容,则您的回复将不会被缓存,因为当您的网址的任何部分发生变化时,Javascript会将您的网址视为新网址。

所以有两个选择,你决定你想要用什么。