预览get.php时,假如显示<li>m10</li><li>m20</li>,当点击m10时候,显示m10下面的文件夹,如何修改下面代码?
折腾了大半天,请高手们指教谢谢!
A服务器有下面3个文件:get.php<html>
<head></head>
<STYLE>
li{cursor:pointer;}
</STYLE>
<script src="js/jquery.js"></script>
<script type="text/javascript">
$(function(){ function do_jsonp() {
$.getJSON("http://192.168.5.97/traversalFolder.php?callback=?",
function(data) {
var lis = '';
for (var i in data){
lis += '<li id="'+data[i]+'" alt="'+data[i]+'"><a href="javascript:void(0);">'+data[i]+'</a></li>';
}
$('#jsonData').html(lis);
});
}
do_jsonp(); $('#jsonData li').live('click', function(){
var t = $(this);
var getFolderName = t.attr("alt");
$.ajax({
url: 'getDir.php',
data: "folderName="+getFolderName,
type: 'post',
async: false//,
//success: function(data) {
//$("#getData").load("getDir.php")
//window.open('getDir.php?','newwindow');
//$('#getData').html(data);
//}
}).responseText;
});

});
</script><body>
  <div>
<ul id="jsonData"> </ul>
  </div>
</body>
</html>
getDir.php<?
$folderName = $_POST['folderName'];
?>load.php<STYLE>
li{cursor:pointer;}
</STYLE>
<script src="js/jquery.js"></script>
<script type="text/javascript">
function do_jsonp() {
$.getJSON("http://192.168.5.97/traversalFolder.php?callback=?",
function(data) {
var lis = '';
for (var i in data){
lis += '<li id="'+data[i]+'" alt="'+data[i]+'"><a href="javascript:void(0);">'+data[i]+'</a></li>';
}
$('#jsonData').html(lis);
});
}
do_jsonp(); </script><div>
<ul id="jsonData"> </ul>
</div>
B服务器有下面文件:traversalFolder.php<?function foo($folder_path,$flag){
  $dir_list = array();
  $handle = opendir($folder_path);
  //echo "<ul id=\"sub\">";
  while(false !== ($filename = readdir($handle))){
    if($filename != '.' && $filename != '..'){
      if(is_dir($folder_path.'/'.$filename)){
        if($filename == $flag){
           $dir_list = array_merge($dir_list,foo($folder_path.'/'.$filename));
        }
//echo '<li class="trigger" alt='.$filename.' sroot='.$_SERVER['DOCUMENT_ROOT'].' <a href="javascript:void(0)">'.$filename.'</a></li>';
//echo '<div id='.$filename.' class="folderShow" style="display:none;"></div>';
        //$dir_list[] = $folder_path.'/'.$filename;
$dir_list[] = $filename;
      }
    }
  }
  //echo "</ul>";
  closedir($handle);
  return $dir_list;
}
//var_dump(foo($folderPath,$folderName));
$folderName = $_GET['folderName'];
$folderPath = $_SERVER['DOCUMENT_ROOT'].'/testUIFolder/'.$folderName;$callback = isset($_GET['callback']) ? $_GET['callback'] : '';
$json = '';
$json = json_encode(foo($folderPath,$folderName));
if (!empty($callback)) {
    $json = $callback.'('.$json.')';
}
echo $json;?>

解决方案 »

  1.   

    $('#jsonData li').live('click', function(){
    var t = $(this);
    var getFolderName = t.attr("alt");
    $.ajax({
    url: 'getDir.php',
    data: "folderName="+getFolderName,
    type: 'post',
    async: false//,
    //success: function(data) {
    //$("#getData").load("getDir.php")
    //window.open('getDir.php?','newwindow');
    //$('#getData').html(data);
    //}
    }).responseText;
    });
    //看看getFolderName这个输出什么alert(getFolderName);
      

  2.   

    要想跨域的话应该要在A服务器端建立一个PHP程序remote.php,用来访问B服务器下的traversalFolder.php文件,最后A服务器下的get.php应该来访问A服务器下的remote.php即可
      

  3.   

    jquery的getJSON本身就支持跨域的