0

私のワードプレスのテーマには、メディア ギャラリーのファイルからの URL を、オーディオ プレーヤーで読み取ることができるプレイリスト スクリプトに入れるプレイリスト スクリプトがあります。

<script type="text/javascript">
var myPlaylist = [
 <?php
 foreach ($audiofiles as $file)
 {
   echo "{
        mp3:'".$file->guid."',
        title:'".$file->post_title."',
        artist:'"."',
        rating:5,
        buy:'".$file->post_excerpt."',
        price:'"."',
        duration:'"."',
        cover:'"."'
    },"
; }
?>
];
</script>

私の問題は、「}」の後にコンマがないように、LAST アイテムの php スクリプトの出力を変更する方法を理解する必要があることです。これは AJAX の問題であると言われましたが、どこから始めればよいかわかりません。

4

4 に答える 4

0

foreach を for に変更して、次のようにすることができます。

<script type="text/javascript">
var myPlaylist = [
 <?php
 for ($i=0; $i<=$audiofile.length; $i++)
 {
   $file = $audiofile[$i];
   echo "{
        mp3:'".$file->guid."',
        title:'".$file->post_title."',
        artist:'"."',
        rating:5,
        buy:'".$file->post_excerpt."',
        price:'"."',
        duration:'"."',
        cover:'"."'
    }"
    if ($i<$audiofile.length)
    {
      echo ","
    }
; }
?>
];
</script>
于 2012-02-27T22:32:53.393 に答える
0

次の方法を試してください。

<?php
 $playlist = array();
 foreach ($audiofiles as $file)
 {
   $playlist[] = "{
        mp3:'".$file->guid."',
        title:'".$file->post_title."',
        artist:'"."',
        rating:5,
        buy:'".$file->post_excerpt."',
        price:'"."',
        duration:'"."',
        cover:'"."'
    }";
 }
?>
<script type="text/javascript">
var myPlaylist = [
 <?php echo implode(',' $playlist);?>
];
</script>
于 2012-02-27T22:27:42.040 に答える
0

オブジェクトを PHP から JS に渡す場合、最も安全で簡単な方法は を使用することjson_encodeです。このようにして、JS 構文を壊す可能性のある文字やその他の文字が$file->post_title含まれている場合に、JS 構文を壊すことを心配する必要はありません。'

<?php
 $playlist = array();
 foreach ($audiofiles as $file)
 {
   $playlist[] = array(
        'mp3'=>$file->guid,
        'title'=>$file->post_title,
        'artist'=>'',
        'rating'=>5,
        'buy'=>$file->post_excerpt,
        'price'=>'',
        'duration'=>'',
        'cover'=>''
    );
  }
?>

<script type="text/javascript">
  var myPlaylist = <?= json_encode($playlist) ?>;
</script>
于 2012-02-27T22:28:02.103 に答える
0

$audiofilesそれが連想配列であると仮定して、これを試しましたか:

<?php
 $totalFiles = count($audiofiless);
 $i = 0;
 foreach ($audiofiles as $file)
 {
   echo "{
        mp3:'".$file->guid."',
        title:'".$file->post_title."',
        artist:'"."',
        rating:5,
        buy:'".$file->post_excerpt."',
        price:'"."',
        duration:'"."',
        cover:'"."'
    }" . (++$i < $totalFiles ? ',' : '');
; }
?>

ただし、連想でない場合は、何もインクリメントする必要がなく、通常のforサイクルを使用できるため、さらに単純になります...

于 2012-02-27T22:28:30.877 に答える