【问题标题】:nested page cannot find parent .js file嵌套页面找不到父 .js 文件
【发布时间】:2013-12-18 14:04:28
【问题描述】:

我在子文件夹“mysite/theSubfolder”中嵌套了 .php 页面——例如,'oneNestedPhpWebPage.php'。

子文件夹中的这些页面包括位于父文件夹中的导航栏 .php 文件:

 // this is code inside my nested .php page "oneNestedPhpWebPage.php"
 <?php
   require_once('../TopNav.php');
 ?>

此 TopNav.php 也被网站 根文件夹 中的网页使用,我必须将 TopNav.php 留在根文件夹中。

当我访问“oneNestedPhpWebPage.php”页面时,最初一切都很好——我可以看到该页面。我也可以看到 TopNav.php 导航栏。

但是TopNav.php页面有下面这行代码:

          <script src="nb.js"></script>

并且,与 TopNav.php 本身一样,javascript 文件“nb.js”位于站点的根文件夹中。

如果我的嵌套 .php 页面之一正在使用 TopNav.php,例如 oneNestedPhpWebPage.php - 这个 nb.js 文件的 javascript 函数是 not从包含的 TopNav.php 调用时被找到。

javascript 文件 nb.js 位于站点的根文件夹中,它是嵌套网页上方的一个文件夹,例如我的“oneNestedPhpWebPage.php”

现在,我还在网站 parent 文件夹中的一堆 .php 网页中使用 TopNav.php——我的导航栏代码——例如,在我的索引中.php 网页在站点的根文件夹中,我有以下内容——注意这里与上面类似代码行的区别:

  // this is code inside my index.php page located in the site's root folder
 <?php
   require_once('TopNav.php');
 ?>

在这里,因为我的 nb.js 文件位于 index.php 的父文件夹中,所以 TopNav.php 对 nb.js 中 javascript 函数的调用工作很好。

为了解决这个问题,我添加了两行代码:

  • 我的嵌套文件“oneNestedPhpWebPage.php”底部的这行代码:

    <input type="hidden" id="nestedBnbPage" value="1" />
    
  • 然后我尝试了一些我以前没有尝试过的东西,我把它放在 TopNav.php 中:

       <script src="nb.js">if(document.getElementById('nestedBnbPage'))this.src="../nb.js";
    

这并没有解决问题。

我有 53 个 .php 网页文件位于嵌套的“mysite/theSubfolder”子文件夹中。我在网站的根文件夹中有更多内容。

而且我需要在两组根文件夹页面和嵌套文件夹页面中使用导航栏代码。

而且我不能将 nb.js javascript 代码放在 TopNav.php 中。

如何配置 TopNav.php,以便在其中一个嵌套网页使用时,TopNav.php 将能够在站点的根文件夹中“找到”其 nb.js javascript 文件?

【问题讨论】:

    标签: javascript php require-once


    【解决方案1】:

    解决此类问题的最佳且唯一真正的方法是为所有需要/包含设置绝对路径和基本 URL。我建议最好的方法是在您的应用中设置一个$BASE_PATH 变量,如下所示。

    $BASE_PATH='/var/www/path/to/my/website/';
    

    要求所有文件如下:

    require($BASE_PATH . 'TopNav.php');
    

    这样无论从哪里调用文件,require 都将使用文件的绝对路径。由于$BASE_PATH 是您设置的一次性变量,您可以在主配置文件或TopNav.php 或其他元素页面加载的任何公共文件中设置它,而不必担心。要使代码可移植,只需根据系统设置更改$BASE_PATH

    我还建议为浏览器端的东西(例如 Javascript)设置一个基本 URL 变量。

    $BASE_URL='http://my.website/';
    

    然后确保您的 PHP 文件在呈现脚本 URL 时正确设置 $BASE_URL

    <script src="<?php echo $BASE_URL; ?>nb.js"></script>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-11
      • 2019-09-29
      • 1970-01-01
      • 2020-07-11
      • 2013-09-11
      • 2019-03-28
      相关资源
      最近更新 更多