【问题标题】:Splitting JQuery off of a concatenated javascript file从连接的 javascript 文件中拆分 JQuery
【发布时间】:2011-12-16 15:50:40
【问题描述】:

目前我在构建时将我的 javascript 连接到一个文件 (all.js) 出于性能原因和减少带宽,我正在尝试使用来自 google api 的 jQuery.js。

https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js

执行此操作后,我的所有 Ajax 功能都停止工作,出现错误:

“未捕获的引用错误:未定义 Ajax。”

以前,jquery 是“all.js”中的第一个文件 我按此顺序包含 javascript 文件:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script>
<script src="/js/all.js"></script>

任何帮助将不胜感激,我已经为此苦苦思索了好几个小时。

导致问题的线路:

jQuery.ajax({
    url: queryUrl,
    //cache: false,
    success: function(html) {
        onAjaxCallSuccess(input, queryUrl, jQuery.trim(html));
    }
});

为了记录,我使用的是 jQuery 1.4.2、jqueryUI 1.8.6 和 mootools 1.4.1

【问题讨论】:

  • 符号“Ajax”本身(没有“$”,没有“jQuery.”)似乎不是 jQuery 问题。
  • 我假设你的 all.js 文件在你的 jquery 之前加载的地方可能会发生竞争冲突。 Mabey 尝试将您的 ajax 放在文档加载或引用本地 jquery 库。
  • 我将 google api 复制到 /js/ 并在 all.js 之前在本地引用它。仍然没有运气:(用萤火虫检查它是双向加载的。我假设它们是按顺序加载的。
  • @DominicGreen all.js 可能会先完成下载,但这并不意味着它在jquery.js 之前运行
  • True @MattKlooster 你有我们可以查看的示例网址吗

标签: javascript jquery ajax jsp


【解决方案1】:

问题是由与 mooTools 的冲突引起的。重构我的 AJAX 以专门使用 jquery,现在一切正常。

【讨论】:

    【解决方案2】:

    据我了解,当您将 jQuery 和所有其他代码放在同一个文件中时,一切正常。但是现在,您已将所有其他代码移动到单个文件 all.js 中,并改为从 CDN 加载 jQuery。

    但我在您的代码中找不到jQuery document ready callback 的任何用法,因此请务必使用:

    $(document).ready(function()
        //run your code here
    });
    

    【讨论】:

    • 你的意思是我应该用 $(document).ready(function(){ //all.js 的内容在这里包围所有的 js。}?? ?
    • 不是一切,把你的应用程序入口点,你在启动时调用的函数——比如加载第一个数据等等
    • 午饭后我会试一试,我会告诉你结果如何。
    • 这使我的代码陷入了无限循环:(。我还没有弄清楚为什么。另外,我用于构建页面布局的函数不可用。
    • 但是,我的搜索框现在可以工作了..(导致 Ajax 错误的那个)所以我认为这是正确的轨道。
    猜你喜欢
    • 2012-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多