2013-02-05 2 views
0

저는 PHP를 처음 사용하는데 다음과 같은 시나리오가 있습니다. PHP 측면에서 는 내가 PHP 측과의 모든 좋은에서 배열을 인쇄 할 수 있습니다 내가자바 스크립트의 PHP json 배열 데이터

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

....... 이 HTML 측면에서 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)); 
?> 

파일이 . 하지만 내가 들키고있는 것은

로드 된 데이터입니다 : [개체 개체], [개체 개체], [개체 개체], [개체 개체], [개체 개체], [개체 개체], [개체 개체] [객체 객체], [객체 객체], [객체 객체], [객체 객체], [객체 객체]

+3

시도해보십시오. console.log (data); Chrome 콘솔 또는 화재 버그 – marbor3

+0

에서 PHP 스크립트의 전체 디렉토리 목록을 브라우저로 보내시겠습니까? 이것의 보안 함의에 유의하십시오. – SDC

+0

예상됩니다. 객체의 기본 문자열 표현은'[object Object]'입니다. 데이터가 양호하거나 적어도 출력이 양호합니다. 루프는 이상하게 보입니다. –

답변

1

먼저 자바 스크립트 alert()은 매우 기본입니다. 문자열 입력 만 처리 할 수 ​​있습니다. 객체 나 배열을 주면 질식합니다. 당신은 그것을 객체로주고 있기 때문에 가능한 최선의 방법으로 그 사실을 보여줍니다.

data 변수에 실제로 무엇이 포함되어 있는지 보려면 alert() 대신 브라우저의 디버깅 도구를 사용하는 것이 좋습니다. 최신 브라우저에는 모두 console.log() 기능이있어 디버그 데이터를 경고 상자가 아닌 디버깅 콘솔에 출력합니다. 이것은 훨씬 더 유용한 정보를 줄 것입니다. F12 키를 눌러 모든 브라우저에서 디버깅 패널을 가져옵니다.

내 생각 엔 당신이 SPLFileInfo 개체의 arry를 출력하려고하지 않는다는 것입니다. 아마 파일 이름 배열을 보내려는 것 같습니다.

루프에 사용하는 반복기는 단순히 파일 이름이 아닌 SPLFileInfo 개체를 생성합니다.

그냥 파일 이름을 얻으려면, 당신은 지금처럼 getFilename() 방법을 사용합니다 :

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

이 지금 당신이 원하는 것을 생각 파일 이름의 배열을 생성합니다.

+0

감사합니다. 이제는 경고음과 방화범 소리로 출력을 볼 수 있습니다. JSON 형식이지만 [ "testscript3", "testscript2", "testscript3"] 여전히 방화 광이 내게 HTML 응답을 알려줍니다. 지금 JSON 배열 을 테이블에 넣고 싶습니다. 어떻게 해석 할 수 있습니까? – user1566277

+0

좋아, $ .each (data, function())로이 데이터를 테이블에 넣을 수 있지만 클릭 할 수 있거나 선택할 수있는 구성 요소를 사용할 수 있으므로 사용자가 제공 한 파일 이름을 선택할 수 있습니다. – user1566277