2015-07-12 72 views
1

当我试图包括tabnav_Browse.php网页,其中位于includes目录和Browse_Page1.php是通过把这个代码的页面<?php include ("../includes/tabnav_Browse.php"); ?>但它显示了在位于Browse目录另一个文件没有什么在Browse_Page1.php页面甚至没有任何一种错误。实际上这个问题是持久的,因为我启动这个jquery ajax函数来动态加载我的网页,而无需重新加载页面。但我已成功将footer.phpstylesheets_fonts_js.phpindex.php包含在一起,这两个文件也都位于includes文件夹中,就像tabnav_Browse.php一样!那么为什么tabnav_Browse.php是不会包括和其他两个呢? 我试过不同的变化,如<?php include ("../includes/tabnav_Browse.php"); ?><?php include ("/includes/tabnav_Browse.php"); ?><?php include ("./includes/tabnav_Browse.php"); ?>但没有任何工作! 这里是我的文件结构PHP包含语句不包括我的PHP文件页面

  • 浏览
  • 包括
  • 的index.php

,这是我的导航菜单。

<nav> 
<ul id='menu' class="menu-items"> 
<li><a href="#Browse_Page1" class="albums active" id="page1-link"><i class="arcd-archive"></i></br>Browse</a></li> 
<li><a href="#Top_albums_Page1" class="pages" id="page2-link"><i class="arcd-music97"></i></br>Top albums</a></li> 
<li><a href="#Top_artists_Page1" class="albums" id="page3-link"><i class="arcd-microphone52"></i></br>Top artists</a></li> 
<li><a href="#Top_lists_Page1" class="pages" id="page4-link"><i class="arcd-numbered8"></i></br>Top lists</a></li> 
<li><a href="#Charts_Page1" class="pages" id="page4-link"><i class="arcd-rising9"></i></br>Charts</a></li> 
</ul> 
</nav> 

这是我在跟load.php文件讨论的jquery ajax函数。

$(function() { 
    $('header nav a').on('click', function() { 
    var linkClicked = $(this).attr('href'); 
    var data = { 
     page  : linkClicked.replace(/\D/g, ''), 
     directory : linkClicked.replace(/(_Page(.*)|#)/g,'') 
    } 

    $("header nav a").removeClass("active"); 
    $(this).addClass("active"); 
    $('#loading').css('visibility', 'visible'); 

    $.post('load.php', data, function(msg) { 
     $('#main-content').html(msg); 
     $('#loading').css('visibility', 'hidden'); 
     $('#main-content section').hide().fadeIn(); 
     }, 'html'); 
    }); 
    }); 

load.php

<?php 
    $page = filter_var($_POST['page'], FILTER_VALIDATE_INT); 
    $dir = filter_var($_POST['directory'], FILTER_SANITIZE_STRING); 
    if ($page !== false && $dir !== false) { 
    $link = $dir . '/' . $dir . '_Page' . $page . '.html'; 
    if (file_exists($link)) { 
    echo file_get_contents($link); 
    } else { 
     echo 'There is no such page!'; 
    } 
    } 
    ?> 

请帮帮我!任何帮助将非常感激!谢谢

+0

添加ini_set('display_errors',1);作为PHP文件的第一行,它将允许显示错误。问题可能是路径问题。 – user2182349

+0

@ user2182349感谢您的支持,你可以理解我的问题'load.php'工作正常,为什么我发布这个文件,因为它使用jQuery的Ajax功能,我在导航菜单中加载页面。至于路径问题,我100%肯定这是正确的,你也看到上面的文件夹结构!发生了什么我不知道! – arcade

+0

使用浏览器控制台或网络选项卡来查看jQuery – user2182349

回答

0

这行应该有两个$ dirs?

$link = $dir . '/' . $dir . '_Page' . $page . '.html'; 

还是应该看起来像这样?

$link = $dir . '_Page' . $page . '.html'; 

对于这个问题,你可以简化你的代码,而不是使用Ajax,或更改HREF为“#”,并使用一个数据文件属性,像这样:

<li><a href="#" data-file="Top_artists1" class="albums" id="page3-link"><i class="arcd-microphone52"></i></br>Top artists</a></li> 

随着本作JavaScript的

$(function() { 
$('header nav a').on('click', function() { 
    var data = { 
     html: $(this).attr('data-file'); 
    } 

    $("header nav a").removeClass("active"); 
    $(this).addClass("active"); 
    $('#loading').css('visibility', 'visible'); 

    $.post('load.php', data, function(msg) { 
     $('#main-content').html(msg); 
     $('#loading').css('visibility', 'hidden'); 
     $('#main-content section').hide().fadeIn(); 
    }, 'html'); 
    }); 
}); 

并在服务器上(load.php):

<?php 
    $url = preg_match('/\w+/', $_POST['data-file']); 
    if ($url !== 0) { 
     if (file_exists($file)) { 
      echo file_get_contents($file); 
     } else { 
      echo 'There is no such page!'; 
    } 
    }