gpt4 book ai didi

jquery ajax 错误

转载 作者:行者123 更新时间:2023-12-01 04:23:24 24 4
gpt4 key购买 nike

我有以下 HTML 页面:

sample_page.html:

<h1>sample html page</h1>
<script type="text/javascript" src="sample_page.js"/>

sample_page.js 是一个空的 JS 文件。

现在尝试使用 JQuery AJAX 加载它:

$('div').load('sample_page.html', function(){
alert('loaded');
});

现在,如果您使用 Firebug 检查请求,您将看到 jQuery 请求 sample_page.html 并且页面本身被缓存(http 状态代码 304)。但是,它从 HTML 文件中删除脚本标记并执行它们(可能使用 $.getScript)。问题在于它会向 JavaScript 文件附加一个时间戳,因此它永远不会被缓存(状态 200)。

对于单页应用程序,这意味着每次用户访问某个页面时,脚本文件都会再次重新加载。有办法解决这个问题吗?

最佳答案

显然,.getScript() 确实 not support the any caching options 。其源码是这样的:

getScript: function( url, callback ) {
return jQuery.get(url, null, callback, "script");
}

由于它是 .get() 的便捷包装器,因此您可以:

  • 通过 .ajaxSetup() 修改全局 Ajax 选项在调用 .load() 之前。这些设置也会影响 .getScript():

    $.ajaxSetup({ cache: true });
  • 或者您可以修改 getScript() 本身:

    $.getScript = function(url, callback){
    $.ajax({
    type: "GET",
    url: url,
    success: callback,
    dataType: "script",
    cache: true
    });
    };

    jQuery 不会因此修改而中断。此代码在所有意图和目的上绝对等同于原始实现,只是默认情况下启用了缓存。

关于jquery ajax 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8538139/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com