0

jQuery でスライドショーを作成しようとしています。このため、フォルダーに保存されているすべての画像の URL を、手動で記述することなく取得しようとしています。Ajax をいじる必要があるようですが、少し混乱しています基本的に、PHPコードの配列に格納されたvarを取得したいと思います

<?php
$dir = "img";
if (is_dir($dir)){
    if ($dh = opendir($dir)){
        $images = array();
        while (($file = readdir($dh)) !== false){
            if (!is_dir($dir.$file)) $images[] = $file;
        }
        closedir($dh);
    }
}
$max = count($images);

$images[]では、JavaScriptで の値をすばやく取得するにはどうすればよいでしょうか。助けていただければ幸いです。:)

4

3 に答える 3

2
<?php
$dir = "img";
$images = array();
if (is_dir($dir)){
    if ($dh = opendir($dir)){
        while (($file = readdir($dh)) !== false){
            if (!is_dir($dir.$file)) $images[] = $file;
        }
        closedir($dh);
    }
}

header('Content-Type: application/json');
echo json_encode($images);

jQuery は、ヘッダーの content-type が設定されている限り、JSON を自動的に解析します。

$.ajax({
 'url' : 'imagelist.php',
 'success': function(result) {
   ...
 },
});
于 2013-08-19T14:34:28.537 に答える
1

私は php の専門家ではありませんが、これ$imagesはファイル名の配列であると仮定します。そうでない場合は、それを行うようにコードを変更してください。次に、php ファイルの最後に次の行を追加します。

echo json_encode($images);

次に、javascript では、次のようになります。

$.get('imagelist.php').done(function(result) {
    $.each(result, function(idx, image) {
        console.log('found image: ' + image);
    }
});
于 2013-08-19T14:29:59.013 に答える
1

JS:

<script>
function loadPHP()
{
var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","somephp.php",true); //replace this with your file name
xmlhttp.send();
}
</script>

HTML:

<button onclick="loadPHP()">Click to load php</button>
<div id="myDiv"></div>

PHP:

<?php
$dir = "img";
if (is_dir($dir)){
    if ($dh = opendir($dir)){
        $images = array();
        while (($file = readdir($dh)) !== false){
            if (!is_dir($dir.$file)) $images[] = $file;
        }
        closedir($dh);
    }
}
$max = count($images);
$toprint = "<ul>";
foreach($images as $x => $y){
    $toprint .= ("<li>".$y."<br /></li>");
}
echo $toprint;
?>
于 2013-08-19T14:23:35.043 に答える