如何创建ajax导航

时间:2019-02-11 08:18:01

标签: php jquery ajax navigation

对于文件管理,我正在使用var $dir,该文件向我显示了文件夹的路径。 我的网址字符串如下所示: www.example.com/index.php?dir=uploads/folder1

下面是我如何导航的路径:

$MainFolderName = 'uploads';
$dir = $MainFolderName;

/* Read actual dir from url */
$actual_link = "http://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$strArr = explode("=",$actual_link);
$CurrentPath = $strArr[1];

// if new folder is created
if(isset($_GET['dir'])) {
$dir = $CurrentPath;
}

要导航,我使用如下所示的锚点:

foreach ($files as $file) {
      .........

if(is_dir($dir.'/'.$file)) {

    $folderanchor = "<a class='folderanchor' href='?dir=".$dir.'/'.$file."'><i class='fas fa-folder'></i>$file</a>";

    echo $folderanchor;

因此,像这样进行导航总是可以完整加载页面。 如何使用ajax进行导航,以便动态加载? 我知道它与GET有关,但是我不知道该如何处理...

顺便说一句:使用

读取文件夹中的所有文件和目录
// exclude dot, double dot and tmp folder
$files = array_diff( scandir($dir), array(".", "..", "tmp") );

2 个答案:

答案 0 :(得分:0)

也许在第一页上,您可以添加以下脚本

<script type="text/javascript">
//on page 1.php
$("body").on('click','a', function(event) {
event.preventDefault();
//Here add script to catch the url
//catching the text
var link= $(this).text;
$.post('anotherpage.php', {url:url}, function(data, textStatus, xhr) {
//Hide the other  div container
$("#con").remove();
//append the new response
$("body").append(data);
});
});
</script>

应该在anotherpage.php上放

if(isset($_GET['dir'])) {
$dir = $CurrentPath;
foreach ($files as $file) {
        .........

        if(is_dir($dir.'/'.$file)) {

        $folderanchor = "<a class='folderanchor' href='?dir=".$dir.'/'.$file."'><i class='fas fa-folder'></i>$file</a>";

        echo $folderanchor;
}

您可能会遇到错误,但是我试图给一个开始.....欢呼

答案 1 :(得分:0)

您只能使用php来实现;没有页面加载!

将锚点更改为表单。 给表单一个隐藏的输入字段,其值为:$dir.'/'.$file 将此值写入外部文件,可以说:dir.php 下一步:从extern文件中读取值并将其绑定到var $dir

您的表单而不是锚点:

<form method="post" action="">
    <input type="hidden" name="writedir" value="<?php echo $dir.'/'.$file; ?>" />
    <button type="submit" class="submitanchor" name="submit_dir"><?php echo $file; ?></button>                                              
</form>

写给dir.php

if($_POST['writedir']) {

   // write dir to file
   $write_to_dir = fopen("dir.php", "w") or die("Unable to open file!");
   $txt = $_POST['writedir'];
   fwrite($write_to_dir, $txt);
   fclose($write_to_dir);

}

现在从dir.php中读取值并将其绑定到var $dir;

// read dir from file
$readdir = fopen("dir.php", "r") or die("Unable to open file!");
$dir = fread($readdir,filesize("dir.php"));
fclose($readdir);

发生了什么:每次单击提交,它都会(隐藏)将隐藏值写入dir.php,然后立即读取该值并将其绑定到var $dir 如果正确,您将看到内容的“平滑”变化而无需页面加载

额外:对按钮进行样式设置,使其看起来像锚一样

button.submitanchor {   
   color: #whateveryouwant; 
   border: none;
   cursor: pointer;
   background-color: transparent;
}