我在div中有一些文件夹,这些文件夹的内容显示在树状视图中(当点击小加按钮时),使用以下代码:
echo '<span class="toggle" onclick="getchildren(\''.$objectnode["fid"].'\', \'childdiv'.$objectnode["fid"].'\');" ></span>';
单击文件夹时,其内容显示在另一个div中,并使用以下代码与其并行:
<a href="#" onClick="getcontents('<?php echo $objectnode["fid"]; ?>', 'foldercontentsdiv', '<?php echo $objectnode["path"].$objectnode["object_name"]."/" ?>','foldercontents');" class="<?php echo $objectnode["object_type"]=='folder'? 'folder': 'document'; ?>"><span><?php echo $objectnode["object_name"]; ?></span></a>
现在我要做的是,当我点击文件夹名称时,其内容应该与div并行加载div,以及它的子节点也应该是可见的或同时展开。任何帮助将不胜感激
答案 0 :(得分:3)
只需进行两次ajax调用。 Ajax调用是异步的,您可以根据需要进行调用。例如,你可以这样做:
function ajax(){
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('POST', 'yourpage.php', true);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
// Your callback code goes here
xmlhttp.responseXML; // this is the response data
}
};
xmlhttp.send(yourdatahere);
var xmlhttp2 = new XMLHttpRequest();
xmlhttp2.open('POST', 'yourpage.php', true);
xmlhttp2.onreadystatechange = function() {
if (xmlhttp2.readyState == 4) {
// Your callback code goes here
xmlhttp2.responseXML; // this is the response data
}
};
xmlhttp2.send(yourdatahere);
}
从onclick函数调用此函数,这应该可以解决问题。您还可以嵌套函数调用。例如,如果您正在等待第一次调用的数据,请将第二次ajax调用放在第一次调用的回调中并执行所有更新。您不需要等待第二个ajax调用返回更新DOM。
您还可以为每个子节点创建单独的ajax调用,如果要对所有子节点执行此操作,则必须执行一些递归,例如:
function ajax(parentNode){
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('POST', 'yourpage.php', true);
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
// Your callback code goes here
xmlhttp.responseXML; // this is the response data
// do stuff with responseXML
}
};
xmlhttp.send(yourdatahere);
var i;
for(i = 0; i < parentNode.childNodes.length; i++){
ajax(parentNode.childNodes[i]);
};
}
已经为此制作了插件。我知道jQuery有一个用于它的框架。我建立了自己的,因为它不是我想要的。我希望这有帮助!