簡體   English   中英

如何從JSON和AJAX中的PHP獲取數據?

[英]How to get data from PHP in JSON and AJAX?

大家好,我正在用PHP提取一些數據,列出了文件夾,而在文件夾中我有一些圖像。 但是我很想知道如何使用AJAX以JSON格式獲取數據,以在DropDown中獲取文件夾名稱。

這是我正在使用的代碼

JS

<html>
<head>
    <script type="text/javascript">

    function getXmlHttp(){
      var xmlhttp;
      try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
        try {
          xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
          xmlhttp = false;
        }
      }
      if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
        xmlhttp = new XMLHttpRequest();
      }
      return xmlhttp;
    }

    function readDir(dirName) {
        var req = getXmlHttp();
        var list = document.getElementById('subDir');  
        req.onreadystatechange = function() {
            if (req.readyState == 4) {
                if(req.status == 200) {
                    list.innerHTML = req.responseText;
                }
            }
        }
        req.open('GET', 'getList.php?data=' + dirName, true);
        req.send(null);
        list.innerHTML = 'loading...';
    }

    </script>
</head>
<body onload="readDir('');">
    <div id="subDir">

    </div>
</body>
</html>

的PHP

<?php 

$dir = "./data/";
if (strlen($_GET['data']) > 0){$dir = $_GET['data'];}
getList($dir);

function getList($name) {
    $path = realpath($name);
    $objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS), RecursiveIteratorIterator::CATCH_GET_CHILD);
    foreach($objects as $name => $object){
        if (filetype($name) == "dir") {
            print "<br/><a href='javascript:void' onClick='readDir(\"" . $path . "/" . basename($name) . "\")'><b>" . basename($name) . "</b></a>";
        } else {
            print "<br/><a><b>" . basename($name) . "</b></a>";
        }
    }
}

?>

在這里,您可以看到代碼的工作方式: http : //tdhdemo.com/phpfetch/

我不確定我的問題是否對,但是您可以將列表添加到PHP中的數組中,並使用json_encode顯示它。 從ajax調用接收數據時,請使用JSON.parse使其易於閱讀。

如果將來要使用它們,還可以分隔文件和文件夾。

<?php 

$dir = "./data/";
if (strlen($_GET['data']) > 0){$dir = $_GET['data'];}
echo json_encode(getList($dir));

function getList($name) {
    $path = realpath($name);
    $objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS), RecursiveIteratorIterator::CATCH_GET_CHILD);

    $folderContent = array("directories" => array(), "files" => array());
    foreach($objects as $name => $object){
        if (filetype($name) == "dir") {
            array_push($folderContent["directories"], basename($name));
        } else {
            array_push($folderContent["files"], basename($name));
        }
    }

    return $folderContent;
}

?>

Javascript:

     function readDir(dirName) {
            var req = getXmlHttp();
            var list = document.getElementById('subDir');  
            req.onreadystatechange = function() {
                if (req.readyState == 4) {
                    if(req.status == 200) {
                        contentList = JSON.parse(req.responseText);

                        for(i in contentList["directories"]){
                           list.innerHTML = list.innerHTML + contentList["directories"][i];
                        }

                    }
                }
            }
            req.open('GET', 'getList.php?data=' + dirName, true);
            req.send(null);
            list.innerHTML = 'loading...';
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM