重新发出AJAX请求

时间:2014-02-26 20:56:03

标签: javascript php ajax

我成功使用RecursiveIteratorIterator从root uploads文件夹中读取所有文件和文件夹。要创建一个界面,用户只需单击一个文件并显示文件的内容或点击,并显示相应的信息,我就会使用AJAX请求。有3个主页以下列递归方式显示信息:

showFiles.php:uploads /

showFileSubs.php:上传/ [点击内容] /

showSubs.php:上传/ [点击内容] / [子点击内容]

showFiles.php:uploads / [clicked content] / [sub clicked content] / [sub sub clicked content]

依此类推,直到没有更多内容或用户停止为止。

我遇到的问题是让showFiles.php显示上传内容/ [点击内容] / [子点击内容] / [子点击内容],因为我的$ _GET ['toBase']参数没有似乎永远不会被设定,尽管有信息进入它。我有信心(有点)信息进入它,因为每次点击,AJAX请求都会创建一个包含正确信息的警报消息框。

我手动将文件路径(所有相对路径)插入到我的RecursiveIteratorIterator中,并且信息是正确的,所以我知道这不是文件路径的问题。除了更改文件目标名称外,每个AJAX请求只是以前工作的复制和粘贴,所以它似乎不是一个粗心的错字。

我的所有页面都启用了error_reporting,但是,没有任何东西可见。

isDirectChild($ path)从我的RecurisveIteratorIterator获取内容并将其解析为相对路径。

showSubs.php

<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>

showFiles.php

$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>
编辑:在意识到我忘记为我的AJAX请求写入创建一个div之后,它现在写道,但是,它正在重新加载整个页面,最终结果非常丑陋且无法使用。这包括重新加载每个页面中包含的菜单栏,但我不确定它为什么这样做。从好的方面来说,现在设置了$ toBase ......

编辑2:添加了我的AJAX请求。我只包含了相对的HTML,其余的是外部CSS文件。每个页面基本上都有相同的HTML。

每页中外部JS文件中的AJAX请求

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;
            }
        }
    }

0 个答案:

没有答案