Javascript 重新发出AJAX请求
我正在成功地使用递归迭代器读取根上载文件夹中的所有文件和文件夹。为了创建一个界面,用户只需单击一个文件,它就会显示内容或单击一个文件,并显示相应的信息,我使用AJAX请求。共有3个主页面以以下递归方式显示信息: showFiles.php:上载/ showFileSubs.php:上载/[单击的内容]/ showSubs.php:上传/[点击内容]/[点击内容] showFiles.php:上载/[单击的内容]/[子单击的内容]/[子单击的内容] 以此类推,直到没有更多内容或用户停止 我遇到的问题是让showFiles.php显示上传内容/[点击内容]/[点击内容]/[点击内容]/[点击内容]/[点击内容],因为我的$_GET['toBase']参数似乎从未设置过,尽管有相关信息。我很有信心信息会进入其中,因为每次单击时,AJAX请求都会创建一个包含正确信息的警报消息框 我手动将文件路径所有相对路径插入到我的递归迭代器中,信息是正确的,因此我知道文件路径没有问题。每个AJAX请求都只是以前工作请求的复制和粘贴,只是更改了文件目的地名称,所以它似乎不是一个粗心的输入错误 我的所有页面中都打开了错误报告,但是没有看到任何错误报告 isDirectChild$path从我的RecurisVeterator获取内容,并将其解析为相对路径 showSubs.phpJavascript 重新发出AJAX请求,javascript,php,ajax,Javascript,Php,Ajax,我正在成功地使用递归迭代器读取根上载文件夹中的所有文件和文件夹。为了创建一个界面,用户只需单击一个文件,它就会显示内容或单击一个文件,并显示相应的信息,我使用AJAX请求。共有3个主页面以以下递归方式显示信息: showFiles.php:上载/ showFileSubs.php:上载/[单击的内容]/ showSubs.php:上传/[点击内容]/[点击内容] showFiles.php:上载/[单击的内容]/[子单击的内容]/[子单击的内容] 以此类推,直到没有更多内容或用户停止 我遇到的问
请添加JS代码和html。@yossi我已经在页面中包含了我的AJAX和html。基本上,它将我的主菜单加载到一个include中,因为它再次位于另一个.php文件中,并且用CSS做了一些奇怪的事情,比如改变背景的位置。我可以忍受CSS有点奇怪,因为它不是很糟糕,我可以重新调整其他东西,但主菜单正在重新加载,我绝对不想。看起来你的JS还可以。如果看不到或不理解整个页面的外观,很难理解php为什么要打印这些额外的数据。尝试将文件哑为不执行任何操作,也不显示任何内容,但在每个if中检查一个唯一值的回显。@yossi为了能够看到我页面上的所有内容并从头开始,我删除了所有CSS并在麻烦页面中添加了一些回显。我重新加载了页面,再次浏览了所有内容,它成功了!我的表只加载了一次,所有3个文件都只加载了一次,包括那个麻烦的文件。或者我误解了AJAX,但我认为它不会加载我的CSS两次。还是我错了?如果要这样做,我怎么能让它只加载一次呢?@yossi我让它在不同的浏览器中工作!基本上,我把CSS和主菜单内容放在一个单独的.php文件中,看看会发生什么,它只加载一次!由于其他一切都是基于showFiles.php中发生的操作,所以我只使用了requireshowFiles.php,它就工作了。我想原因是我的主菜单文件中有一个讨厌的if语句,他们会重新加载页面。这对我来说没有太多意义,但我以后会仔细考虑的。
<table border = "0" cellspacing = "0" cellpadding = "0" id = "subParentTable" >
<tbody>
<form>
<?php
$allCurrFiles = isDirectChild($searchIn);
for($currFile = 0; $currFile < count($allCurrFiles); $currFile++) {
$img = getImgPath(trim(basename($allCurrFiles[$currFile])));
echo("<tr>");
echo("<td><button onClick = 'sendToBase(this)' type = 'button' name = 'butt' value = $allCurrFiles[$currFile] id = 'btn'><img src = $img /></button></td>");
# echo("<td onClick = 'sendToBase(this)' ><img src = $img /></td>");
echo("<td>$allCurrFiles[$currFile]</td>");
echo("</tr>");
}
?>
</form>
</tbody>
</table>
$toBase = null; // to avoid the error of undefined index in my if statement
if(isset($_GET['toBase'])) {
$toBase = $_GET['toBase'];
echo("to base is $toBase <br />");
} else {
echo("to base is not set <br />");
}
if(($toBase == null) || (!isset($_GET['toBase']))) {
// shows the immediate content of uploads/
} else {
// meant to show the content of uploads/[clicked content]/[sub clicked content]/[sub sub clicked content]
}
?>
<div id = "displayTable"></div>
<div id = "displayDir"></div>
</body>
function sendToBase(x) {
var row = x.parentNode.innerText;
var xmlhttp = "";
alert("to base -- " + row); // alert does show the clicked file name, so I know row contains th
if(window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
} else if(window.ActiveXObject) {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET", "showFiles.php?toBase="+row, true);
xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
xmlhttp.send();
xmlhttp.onreadystatechange = function() {
if((xmlhttp.readyState == 4) && (xmlhttp.status == 200)) {
document.getElementById("displayTable").innerHTML = xmlhttp.responseText;
}
}
}