4

总而言之,我知道我们可以使用load方法将动态内容加载到 div 中。但就我而言,我在使用时发现了一个问题。如果要在完全相同的页面中加载包含一些外部 js 文件的同一页面。你会发现同一个js会被加载两次。一个是第一次打开页面,第二个是ajax加载同一个页面的时候。所以我认为这个案子会存在一些潜在的问题。例如,如果您在 JavaScript 中为在 js 文件中初始化的变量设置一个值,在加载页面后,您会发现它会恢复为初始化值。我能找到的解决方案之一是使用 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

4 回答 4

1

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

$("#area").load("something.html #content");
于 2013-07-01T09:16:52.700 回答
1

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

尝试location.reload()

于 2013-07-01T09:21:09.357 回答
0

一种方法是添加检查以查看此文件是否已加载。像这样:

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

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

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

于 2013-07-01T09:22:28.150 回答
0

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

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

我正在发布另一个问题的回复,它可以解决您的问题。参考:停止缓存 jQuery .load 响应

简而言之,您应该使用 $.ajax({...}) 或者如果您想继续使用 $("...").load(),您需要使用您的 URL 传递一个时间戳,例如: http:// /example.com?ts=12233232323 如果您实现了类似上述 URL 的内容,您的响应将不会被缓存,因为当您的 URL 的任何部分发生更改时,Javascript 会将您的 URL 视为新 URL。

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

于 2013-07-01T09:24:38.700 回答