jQuery getScript()有时工作正常,有时返回;parsererror";和类型错误异常
我对jQuery(目前是1.9.1版本)有一个奇怪的问题,我正在使用getScript()函数根据需要加载一些额外的JS库。它每次都从相同的库加载相同的库,因此多个请求之间没有区别。它总是以“application/javascript”的形式从服务器返回。对于这些请求,我只使用一个浏览器jQuery getScript()有时工作正常,有时返回;parsererror";和类型错误异常,jquery,ajax,getscript,Jquery,Ajax,Getscript,我对jQuery(目前是1.9.1版本)有一个奇怪的问题,我正在使用getScript()函数根据需要加载一些额外的JS库。它每次都从相同的库加载相同的库,因此多个请求之间没有区别。它总是以“application/javascript”的形式从服务器返回。对于这些请求,我只使用一个浏览器 $.getScript(scripts[s], function(){ onScriptLoaded(); }).done(function(script, textStatus) { console
$.getScript(scripts[s], function(){
onScriptLoaded();
}).done(function(script, textStatus) {
console.log(textStatus);
}).fail(function(jqxhr, settings, exception) {
console.log(jqxhr, settings, exception);
});
它通常运行正常,调用.done()
,文本状态为success
。但是,大约十分之一的请求失败,调用.fail()
-设置包含解析器错误和异常选项包含类型错误{}
我真的不知道为什么会这样,因为10次中有9次效果很好。但为什么有时候会失败,我真的不知道。有人能解释一下这个问题吗
我很乐意得到任何提示或帮助。好的,我已经找到了解决方案,但我不满意,因为我不知道这个问题的真正原因
我使用了回答中提到的解决方案:
这不是一个真正的答案,因为我不知道发生了什么,为什么。我很高兴我成功了,但我希望有人能解释一下
我希望,至少它能帮助有类似问题的人。您是从同一台服务器调用脚本还是从不同的服务器调用脚本检查Firebug中的网络流量并查看状态代码。我猜可能是某种500服务器错误,我之前在开发工具中检查过,服务器总是返回正确的文件,200 OK,内容类型正确。在我现在删除的答案的评论中,Frodik说,当错误发生时,他甚至通过比较MD5哈希来检查返回的内容!所以发生了一些非常奇怪的事情。我怀疑你正在遭受过早的评估。getScript使用$.get,然后进行解析。我认为浏览器在缓冲区准备就绪之前发出完成信号。如果是这种情况,那么在解析之前屈服应该可以解决它。修改jQuery有点极端,但您可以通过在代码中直接使用get和eval并使用setTimeout调用eval来测试这一想法,从而给XHR一个完成编组的机会。