0

我是 PHP 新手,我有以下场景;在 PHP 方面,我有一个文件 get_folders.php

<?php
$arr = array();
foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/var       z/www/scripts')) as $filename)
{

 array_push($arr,$filename);
}
print (json_encode($arr));
?>

在 html 方面我有

<!DOCTYPE html PUBLIC"-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<head>
<script type="text/javascript" src="jquery.js"></script>          
<script type="text/javascript">   

function myFunction()
{
    $.getJSON("get_folders.php", function(data){


   alert("Data Loaded: " + data);

    $('#thetable');
   var html = '';
   for(var i = 0; i < 10 ; i++)
        html += '<tr><td>' + data;
   $('#thetable').append(html);
  });                                      

  }                  
 </script>                                                               
 </head>     
 <button onclick="myFunction()">Try it</button>
 <div>
 <table id="thetable">
 <th>Header 1</th>
 </tr>
 <tr>
 <td></td>
 </tr>
 </table>
 </div>

.......我可以在php端打印数组,一切都很好。但我唯一得到警报的是

加载的数据:[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object对象],[对象对象],[对象对象]

4

1 回答 1

1

首先,Javascriptalert()功能非常基础;它只能处理字符串输入。如果你给它一个对象或一个数组,它会窒息。你给了它对象,所以它以最好的方式向你展示了这个事实。

如果您真的想查看data变量包含的内容,我建议使用浏览器的调试工具而不是alert(). 所有现代浏览器都有一个console.log()功能,可以将调试数据输出到调试控制台而不是警告框。这将为您提供更多有用的信息。按 F12 在任何浏览器中获取调试面板。

但我的猜测是你不打算输出一系列SPLFileInfo对象。看起来您可能打算发送一组文件名。

您用于循环的迭代器会生成一个SPLFileInfo对象,而不仅仅是文件名。

要仅获取文件名,您将使用该getFilename()方法,如下所示:

foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator('/var/www/scripts')) as $fileinfo)
{
    array_push($arr,$fileinfo->getFilename());
}

现在这将生成一个文件名数组,我认为这是您想要的。

于 2013-02-05T14:36:42.083 回答