0

我有一个 jquery click 事件,它使用 .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 时没有出现

4

1 回答 1

0

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

可能的解决方案是关闭缓存(参见 $.ajax() 方法)或像当前时间一样在查询(又名 url)中添加动态参数,因此浏览器不会缓存结果。或者在 $.load() 中使用 post 方法(只需添加要发送的任何数据,Jquery 将使用 post 而不是 get),尽管我不确定这是否是一种优雅的方式 -)。

于 2013-01-16T14:16:46.733 回答