【问题标题】:Dynamic jQuery code: is there any way to include it in a file?动态 jQuery 代码:有没有办法将它包含在文件中?
【发布时间】:2010-09-12 11:13:36
【问题描述】:

我一直在使用内联 jQuery 进行开发和测试。我正在使用 CodeIgniter,以下是我的观点。

我的页面顶部有<script="text/javascript">JQUERY CODE</script>。我的一些代码是动态的,因为它使用 PHP 变量,例如进行 Ajax 调用时,URL 前面有 <?php echo base_url(); ?>

我已经让代码工作了,但我想把它放在一个外部 JS 文件中以保持整洁。我似乎没有办法做到这一点。我说的对吗?

我的网站的一个方面是 Google 地图。我到处使用它们。同样,部分代码是动态的,来自 PHP。同样的问题。

作为一个细微的变化,在地图上,我有很多页面,上面有许多略有不同的地图。有没有办法有效地重用地图代码,还是我必须有一些重复的代码?

【问题讨论】:

    标签: javascript jquery google-maps inline external


    【解决方案1】:

    那么您的自定义大多只是对谷歌地图之类的参数替换吗?如果是这样,为什么不只是有一个以 JSON 对象作为参数的函数调用。让您的后端通过 AJAX 请求提供一些 JSON 数据,将数据传递给函数,然后您就完成了。需要下载的 JS 代码更少,设置更简洁。

    // site.js
    function displayMap(params) {
      // code to display google map using values from params
      // for instance:
      var lat = params.lat;
      var long = params.long;
    }  
    

    要使用它,请执行以下操作:

    $.get('ajax/mapdata.json?id=5', function(data) {
      displayMap(data);
      alert('Load was performed.');
    });
    

    通过创建如下内容从您的应用中输出 JSON:

    {
      lat: 232
      long: 123
    }
    

    希望有帮助!

    【讨论】:

    • 牛头人,感谢您的回复。这很可能是我需要的——但是我不明白你在说什么。你能用白痴语言解释吗?谢谢
    • 基本上我需要传递诸如我从数据库中获得的纬度和经度之类的东西,base_url();值,用户名等
    • @Thomas 有两种方法:你可以像@Tauren 建议的那样使用 AJAX 机制,或者你的 php 主页面可以将所有参数数据转储到外部纯 Javascript 找到的 JSON 结构中,然后使用。
    • @Thomas:听起来你并没有真正改变 JS 逻辑,只是改变了价值观。这很好,因为在我看来,维护、版本控制、JS 的可下载大小、缓存等等都会使这条路线变得更糟。根据您的需要,我强烈建议您只在您的页面中或通过 AJAX 调用返回一个 JSON 对象,并拥有一个接受该 JSON 并使用其中的值的函数。
    • 好的。我将不得不研究这个 - 这对我来说是新的,但我可以有一个我在我的页面中调用的外部 js 文件的基本想法,然后我可以编码我所有的 php vars(根据需要),这些可用于已调用的 js 文件?谢谢
    【解决方案2】:

    好吧,就像直接在页面内执行的操作一样。将.js 文件重命名为.php 脚本,并在.php 文件中包含与之前相同的PHP 代码。然后,在 HTML 文件中,使用filename.php(不是.js)。 Web 服务器将在脚本上调用 PHP 并将生成的 JavaScript 发送给浏览器。

    【讨论】:

    • 抱歉,我不清楚 - 使用 codeigniter 是这里的关键。我正在将数据传递给我的视图文件。例如,这是从数据库中获取的数据。在我看来,我有我的 js 代码 - 要利用命名 js 文件 .php 的方法,我必须首先克服将数据传递到文件的问题。因此我是否坚持将其内联?
    • 不要这样做 - 你真的应该转向纯 Javascript 解决方案,因为你似乎(正确地)已经希望了。
    【解决方案3】:

    您可以在主页中创建一个 JSON 数据块:

    <script>
      var pageData = {
        something: 'whatever',
        somethingElse: [ 33.20, 19.02 ],
        moreStuff: false
      };
    </script>
    

    然后从您的脚本中引用变量“pageData”。

    【讨论】:

    • 这是一个外部 .js - 它不需要命名为 .php 因为使用一点内联 js 我已将 js vars 设置为 php 值.. 对吗?谢谢
    • 正确 - 它应该是“.js”文件中的普通旧 Javascript。页面上的小块 Javascript 应该只包含脚本所需的动态数据。
    猜你喜欢
    • 1970-01-01
    • 2020-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-02
    • 2011-12-04
    • 1970-01-01
    • 2014-03-09
    相关资源
    最近更新 更多