自动获取输入ID值并使用ajax传递

时间:2016-01-23 18:56:01

标签: php jquery ajax

我有以下代码来获取文件夹的目录,

<?php

$path = 'templates';
$files = scandir($path);

foreach($files as $result) {
     if ($result != "." && $result != ".." && $result != "desktop.ini")
     {
              echo '<img src="img/folder.png" width="40px"><a name="'.$result.'" class = "folderLink" href="#">'.$result.'</a> <input type="hidden" name="'.$result.'" value="'.$result.'"></img><br><div  class="fileListInner"></div>';
     }

}
?> 

以上代码返回动态文件夹名称数。此代码工作正常,并在成功时显示文件夹列表。这是我的表格,

<form id="t-files">
    <a style="margin-left:160px;" class="list-directories" href="#">Select File Path</a><br><br>
    <div id="fileList"></div>
</form>  

现在我想进入每个文件夹并列出子文件夹。要做到这一点,我得到每个链接的类名,并点击甚至调用ajax函数。这是代码,

// load directories - inner (settings)

    $(document).on("click",".folderLink",function(e){  
          e.preventDefault();
          $.ajax({
            type: 'post',
            url: 'list-directories-inner.php',
            dataType: 'text',
            data: $('#t-files').serialize(),
            success: function (data) { 
                $('#fileList').html(data);
            }
          });
          exit();
    });    

list-directories-inner.php文件,

<?php    

foreach ($_POST as $key => $value){
   echo "".$key."<br>";
}
$path = 'templates';
$files = scandir($path);

foreach($files as $result) { 

     if ($result != "." && $result != ".." && $result != "desktop.ini")
     {    
           //   echo '<img src="img/folder.png" width="40px"><a href="#">'.$result.'</a></img><br>';

     }

}
?>

如何通过点击链接(隐藏输入)名称值而不是传递所有隐藏值?因为在list-directories-inner.php文件中我想获得点击的链接值来设置路径。类似于&#39;模板/帖子价值&#39;。我想了几个小时。请帮忙。

3 个答案:

答案 0 :(得分:1)

不确定您说的是哪个链接,但我收集了以下内容:

  <img src="img/folder.png" width="40px"><a name="'.$result.'" class = "folderLink" href="#">'.$result.'</a> <input type="hidden" name="'.$result.'" value="'.$result.'"></img><br><div  class="fileListInner"></div>

如果是这样,您可以将$result值作为数据属性添加到链接中,以便:

 <img src="img/folder.png" width="40px" /><a name="'.$result.'" class = "folderLink" href="#" data-path="'.$result.'">'.$result.'</a><br><div  class="fileListInner"></div>

注意data-path属性。然后获取click事件的值。

  $(document).on("click",".folderLink",function(e){  
      e.preventDefault();
      var path = $(this).data('path');
      getInnerDirectoryList(path);
  });

  function getInnerDirectoryList(path){

      $.ajax({
        type: 'post',
        url: 'list-directories-inner.php',
        dataType: 'text',
        data: {path_url: path},
        success: function (data) {...},
        error: function(msg){....}
      });

  }

可能有类似上面的内容吗?

这是一个简单版本的jsbin: https://jsbin.com/yajefi/edit?html,js,output

答案 1 :(得分:0)

你应该尝试声明一个函数,该函数获取所包含所需字段的clicked文件夹的输入id,而不是每次点击.folderLink类时调用的泛型函数。

答案 2 :(得分:0)

西蒙的回答应该有效,但这是另一种选择。

您可以像这样获取隐藏输入的值(因为它与隐藏输入的名称相同)。

$(document).on("click",".folderLink",function(e){ 
      var folder = $(this).siblings('input:hidden').val(); 
      e.preventDefault();
      $.ajax({
         type: 'post',
         url: 'list-directories-inner.php',
         dataType: 'text',
         data: {folder: folder},
         success: function (data) { 
             $('#fileList').html(data);
         }
      });
});