Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用$.ajax的问题_Javascript_Jquery_Ajax_Load_Lightbox - Fatal编程技术网

Javascript 使用$.ajax的问题

Javascript 使用$.ajax的问题,javascript,jquery,ajax,load,lightbox,Javascript,Jquery,Ajax,Load,Lightbox,我只想在满足特定条件时加载lightbox javascript,因此我使用$.ajax加载它,如下所示: $.ajax({ url: "../static/js/lightbox.js", dataType: 'script', cache: true, success: function() { alert('loaded'); $("a.lightbox").lightbox({ opacity: "0.6", width: "940"

我只想在满足特定条件时加载lightbox javascript,因此我使用$.ajax加载它,如下所示:

$.ajax({ url: "../static/js/lightbox.js", dataType: 'script', cache: true, success: function() {
    alert('loaded');
    $("a.lightbox").lightbox({
        opacity: "0.6",
        width: "940"
    });
}});
我看到“已加载”警报,但灯箱不工作。但是,当我从HTML直接加载文件(scriptsrc)时,lightbox可以工作。我该如何解决这个问题

非常感谢您的帮助。

您将希望使用此功能(较短,但缓存效果略有不同),例如:

$.getScript("../static/js/lightbox.js", function() {
  $("a.lightbox").lightbox({
    opacity: "0.6",
    width: "940"
  });
});

脚本下载正确吗?您是否看到“已加载”警报?如果我是你,我会在lightbox.js中放一个警报,看看下载后是否正确执行。还要检查JavaScript错误。

问题是js仍然不是DOM的一部分。获得lightbox.js是正确的,但它还没有准备好执行。要动态获取js文件,必须使用getScript方法而不是ajax。看看API:

getScript是$的简写。ajax({url:url,数据类型:'script'})getScript是一样的,只是它不支持异步缓存……顺便说一句,getScript也是一样。@Nimbuz-这里不需要的缓存,你会得到重复的脚本,包括或没有ajax语法的成功回调。尝试
alert($.fn.lightbox)
你得到了什么?@Nimbuz-如果你处理的是
文件://
而不是
http://localhost/
,这将不允许通过ajax获取脚本(或任何其他内容)。是否尝试使用
$.getScript
而不是
$.ajax
?它会像ajax函数一样下载脚本,但它也会
eval
下载的脚本,这样其他javascript就可以使用这些函数和变量。好主意!但是,不会加载lightbox.js中的警报:(文件下载了吗?可能是因为路径错误。您可以使用Firebug的Fiddler查看HTTP请求是否成功