如何在textarea中显示文件的内容而不重定向到新页面

时间:2015-02-02 22:45:58

标签: php ajax ajaxform

<?php

    $blacklist = array("one.jps", "two.txt", "four.html");
    $files = array_diff(glob("*.*"), $blacklist);

    foreach($files as $file)
        echo "<div class='post'><a href='" . $_SERVER['PHP_SELF'] . "?file=" . $file . "'><p>" . $file . "</p></a></div>";


    if(!empty($_GET["file"]) && !in_array($_GET["file"], $blacklist) && file_exists($_GET["file"])) 
        $thesource = htmlentities(file_get_contents($_GET["file"]));

?>

<textarea rows="40" cols="100" placeholder="Source code of file" class="source"><?php if(!empty($thesource))echo $thesource; ?></textarea>

我使用的上述代码是echo目录中的所有文件(除黑名单中的文件外)。当用户单击该文件时,源代码(该文件中包含的所有内容)将显示在textarea中。

单击该文件将在textarea中显示源代码,但是当您单击该文件时,您将被发送到新页面,其中源代码显示在textarea中。简而言之,代码可以工作,但您将被发送到新页面。我如何做到这一点,以便您所在的当前页面上发生一切。

我相信我需要使用AJAX,但我该怎么做?

请注意,当我说文件时,我正在谈论目录中回显到页面上的文件。它们嵌套在&lt; p&gt;内&LT; / p为H.元件。

1 个答案:

答案 0 :(得分:0)

使用ajax将文件内容加载到textarea。

注意

我假设textarea在这个例子中有一个id =“source”。

url-这是带有get参数的页面url,其中显示了文件的内容。例如,http://example.com/get_file.php?file=abc.txt

function loadDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {
  xmlhttp=new XMLHttpRequest();
  }
else
  {
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("source").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET",url,true);
xmlhttp.send();
}

修改

您需要在按钮上添加 onclick 事件才能调用上述功能。

Heres,jsfiddle