我经常需要通过ajax加载其他javascript文件,所以一开始我使用了jQuery提供的标准函数来加载脚本:
$.getScript('script_name.js',callback_function());
但这并没有奏效,因为$.getScript是异步的(用于$.ajax的jQuery API表示默认情况下“async”设置为true;主题在用于$.getScript的API的注释中讨论:http://api.jquery.com/jQuery.getScript/). 因此,我编写了这个函数,正如上面链接的API页面的评论中有人提供的:
加载:函数(脚本、回调){
jQuery.ajax({
async:false,
类型:’GET’,
url:脚本,
数据:空,
成功:回调,
数据类型:’script’
});
},
这似乎工作得很好,所以我接着说,但我最近注意到,这只适用于同一目录中的脚本,例如调用myObj.load(’test.js’)工作得很好,但调用myObj.load(’test/test.js’)根本不起作用
感觉好像我错过了一些明显的东西,但我没有找到问题所在。有什么想法吗
默认情况下,可以使用ajaxSetup将ajax调用设置为同步。这就是它的样子:
$.ajaxSetup({async:false});
$.getScript('script\u name.js',回调函数);
如果再次需要异步调用,只需通过以下方式启用:
$.ajaxSetup({async:true});