使用jQuery加载缓存脚本时处理404s
我想使用jQuery
加载一个JS文件(原因超出了本文的范围)。 我想在可用的情况下使用缓存。 此外,我无法将全局ajax cache
设置为true
(再次出于范围之外的原因)。 这排除了我使用getScript
方法所以,根据jQuery的网站,我做了以下内容:
$(function() { options = { dataType: "script", cache: true, // scheme-less URI. url: "//ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min1.js",//<--- 404 success: function() { console.log("yes") }, error: function() { console.log("error") }, always: function() { console.log("always") }, statusCode: { 404: function() { console.log("404") } } }; var $d = jQuery.ajax(options); });
现在这在所有情况下都能很好地工作,除非脚本请求返回404时,不会调用任何错误或失败方法。
我可以强制它通过应用超时来调用,但我不想。 为什么不调用error handling方法?
小提琴 : https : //jsfiddle.net/15kozdpf/4/
看起来像jQuery 1中的一个错误。
如果删除dataType: "script",
一切正常(无论您请求的URL)。
另一个选项 – 升级到jQuery 2:
https://jsfiddle.net/6asrte12/
尝试在url前添加https:。 这个对我有用
**Fiddle:** https://jsfiddle.net/15kozdpf/3/