【问题标题】:Ajax and external JS scriptsAjax 和外部 JS 脚本
【发布时间】:2013-12-11 00:10:58
【问题描述】:

当我动态加载 php 页面时,链接到该 PHP 页面的外部 JS 文件似乎没有生效。 HTML文件中有已知的JS代码调用函数,JS文件通过修改某些标签来完成所有工作。

HTML 页面将加载链接到 JS 脚本的 PHP 文件。相关代码如下。

如果直接加载,这确实有效,而不是在动态加载时我在过去遇到过类似的问题,解决方案是在加载内容时使用回调功能,但是因为所有 JS 都在外部文件中而不是确定最好的方法。

加载 PHP 文件的 HTML 代码

<script>
   $(document).ready (function() {
      $('#test').click(function(event) {
        $('#content').empty();
        $('#content').load('view/search.php');
      })
    })
</script>

JS如何链接到PHP文件中

       <script type="text/javascript" src="edit.js"></script>

当直接加载 PHP 页面时,所有代码再次正常工作。

非常感谢

【问题讨论】:

  • 您确定edit.js 的路径正确吗?主机页面的 URL 将用作当前目录,而不是 view/search.php
  • 您是否看到在您的开发人员工具中请求edit.js,或者根本没有请求?此外,您的script 在您的search.php 输出中位于何处?也许它没有被包含在你的标记中。

标签: javascript php jquery html ajax


【解决方案1】:

支持加载包含脚本标签的 HTML。但是请记住,load 只会将您的内容插入到 DOM 中。因此,如果您插入了&lt;script src="edit.js"&gt;&lt;/script&gt;,DOM 将尝试从当前目录加载edit.js,而不是从您正在加载的php 文件的目录。

【讨论】:

    【解决方案2】:

    使php文件在script标签中输出edit.js的内容

    例如

    <script>
       <?php
          echo file_get_contents('edit.js');
       ?>
    </script>
    

    【讨论】:

      【解决方案3】:

      如果我正确理解您的问题,这对我有用。然后在点击时加载js文件。这种方法的缺点是,如果多次单击,每次都会加载文件,从而使您的 DOM 变得混乱,从而导致网站运行缓慢。

      <script>
         $(document).ready (function() {
            $('#test').click(function(event) {
              $('#content').empty();
              $('#content').load('view/search.php', function() {
                     $.getScript(path+to+script);
              });
            })
          })
      </script>
      

      【讨论】:

        猜你喜欢
        • 2013-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-14
        • 2011-06-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多