jquery加载缓存

时间:2012-12-07 15:01:54

标签: jquery

我有一个jquery点击事件,它使用.load()

将html表单加载到div中

表单片段有一个引用js文件,该文件重新定义了js,同时还使用ajax响应填充表单输入。

当我单击表单上的保存时,然后加载div(使用.load)保存的视图版本。

如果我再次单击编辑以启动我提到的第一个操作,则会执行加载,但不会重新加载javascript引用,因此ajax填充不会启动

任何解决方案?

<script type="text/javascript" src="js/controls.js"></script>

编辑:添加代码

function populate() {
        var index = 1;
        $("#list").html("&nbsp;");
        for (item in object) {
            var html ='blah';
            $("#list").append(html);

            $(".item").live('click',
                function() {
                    $("#container").load("./html-includes/file.html?ver="+ver, function () {
                        apiCall.getData(referenceId);
                        alert('callback'+$rootScope.currentPage);
                    });
                }
            );
            index++;
        };
    }

在这种情况下,文件html具有前面提到的javascript参考,其中有一个调试警报,在第二次调用.load

时没有提交

1 个答案:

答案 0 :(得分:0)

很可能你的$ .load()方法第一次工作,因为浏览器没有缓存中的数据。下次在循环中调用它时,不会执行Ajax调用,而是从缓存返回数据。结果回调没有被解雇.... 您可以使用fidller或类似工具看到这一点 - 您只会看到一个服务器请求....

可能的解决方案是关闭缓存(请参阅$ .ajax()方法)或在查询(aka url)中添加动态参数,如当前时间,因此浏览器不会缓存结果。 或者在$ .load()中使用post方法(只添加要发送的任何数据,Jquery将使用post而不是get),虽然我不确定它是否是优雅的方法 - )。