2016-04-25 7 views
0

This postは、サンプルとして、サーバーファイルリストを取得してサンプルコードを提供しています。私の問題はalert('index ' + key + ' points to file ' + val);警報Javascriptをページに何も表示されないということであるJavascriptはPHP関数を呼び出して結果を返します

$dir = $_REQUEST['dir'] ; 
$dir = $_SERVER['DOCUMENT_ROOT'] . $dir; 

$filesArray = array(); 
$Counter = 0; 
$files = scandir($dir); 

foreach ($files as &$file) { 
    if ($file!='.' && $file!='..') { 
     $filesArray[$Counter] = $file; 
     echo $filesArray[$Counter].''; 
     $Counter++; 
    } 
} 

echo json_encode($filesArray); 

<html lang="en-US"> 
<head> 
    <meta charset="UTF-8"> 
    <title>How to create form using jQuery UI</title> 
    <link href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/themes/pepper-grinder/jquery-ui.css" media="screen" rel="stylesheet" type="text/css"> 
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js"></script> 
    <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.10.2/jquery-ui.min.js" type="text/javascript"></script> 

    <script type="text/javascript"> 
    $(function() { 
    $.get('getfilename.php', { dir : '/ajax1/' }, function(data) { 
     // you should now have a json encoded PHP array 

     $.each(data, function(key, val) { 
      alert('index ' + key + ' points to file ' + val); 

     }); 
    }, 'json'); 
    alert ("ok"); 
}); 

    </script> 
</head> 
<body> 
<h1>Get file names... </h1> 
</body> 
</html> 

getfilename.php:ここで私が使用しているコードです。私はFirebugのコンソールログで応答を得るため、スクリプトが動作しています。

ajax.jsajax.phpindex.html["ajax.js","ajax.php","index.html"] 

この情報をhtmlページに戻すためにJSONを使用するために変更する必要があるものは何ですか?

ありがとうございました。

+0

何あなたのjavascriptコンソールに 'console.log(data);'の出力?コンソールエラーはありますか? – Robbert

+0

ありがとうRobbert - Firebugを使用しましたが、Consoleセクションにエラーは表示されません。 – PeterK900

答えて

1

デバッグでは、PHPでJSON出力を壊しました。だから、削除:

echo $filesArray[$Counter].''; 

をまた、任意の出力の前に、あなたはJSONヘッダを追加する必要があります終了時

header('Content-Type: application/json'); 

を、あなたのPHPファイルは次のようになります。

$dir = $_REQUEST['dir'] ; 
$dir = $_SERVER['DOCUMENT_ROOT'] . $dir; 

$filesArray = array(); 
$files = scandir($dir); 

foreach ($files as &$file) { 
    if ($file!='.' && $file!='..') { 
     $filesArray[] = $file; 
    } 
} 
header('Content-Type: application/json'); 
echo json_encode($filesArray); 
+0

彼は '$ .get'を呼び出すときにデータ型' json'を指定するので、 'Content-Type'ヘッダは冗長です。 – Barmar

+0

あなたの鶏は卵よりも古いです、Barmar。彼がPHPヘッダを指定した場合、後で 'dataType'については気にしません。 – skobaljic

+0

しかし、彼はすでに彼の質問のコードでそれを持っているので、コードを修正する必要はありません。 – Barmar

関連する問題