免责声明:我对AJAX很新!
我环顾四周,我不确定使用ajax加载javascript的方法。
我正在使用ajax来请求每个都需要6-10个简短方法的页面。总共可能有5-6个这样的页面,所以大约总共有35种以上的方法。
我更愿意访问需要加载的每个页面所需的javascript。
我见过几种方法,我不确定哪种方法最符合我的需要:
在头部包含一个空脚本元素,并通过操作src属性。 DOM。
通过创建新的脚本元素。 DOM并将其附加到document.body(这听起来与#1相同)。
由于我是ajax和web开发的新手,我很好奇每种方法的起伏,以及我错过的任何方法。
有些担忧是: - 将使用缓存副本,还是每次发出ajax请求时都会下载脚本。请注意,脚本将是静态的。 - 浏览器兼容性。我使用Chrome,但此应用程序将用于IE> = 7以及Firefox的各个版本。
答案 0 :(得分:6)
在jQuery环境中,我使用getscript()
。你对这个缓存感到好奇 - getscript
包含一个缓存破坏功能(主要用于破坏激进的IE缓存,虽然当然在其他情况下很有用)。您可以像这样执行等效的非缓存失效getscript
:
$.ajax({
cache: true,
dataType: "script",
url: "your_js_file.js",
success: yourFunction
});
答案 1 :(得分:1)
正如所有其他答案在这里只是说“使用jquery”而没有任何进一步的信息/解释/理由,它可能值得看看你提到的其他选项。
可能有点复杂,因为它要求你等到一个脚本下载并运行才能获取下一个脚本(因为你只有一个脚本元素)。
更好,因为您可以在第一个脚本元素完成下载之前将其附加到DOM,而不会影响下载/执行。
$.getScript()
和$.ajax()
都使用eval()
来执行脚本。 eval()
在这种情况下不是“邪恶的”,因为它是一个值得信赖的来源,但根据我的经验,在调试eval()代码时偶尔会有点困难。 不可能是afaik。
答案 2 :(得分:0)
使用getScript
。它基本上与第二种方法做同样的事情,但你不必担心如何在各种浏览器(主要是IE)中监听负载。
就DOM而言,AJAX响应只是文本。除非您以某种方式将其插入DOM中,否则它无效。