0

我的 wordpress 主题中有一个播放列表脚本,它将媒体库中文件的 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>

我的问题是我需要弄清楚如何更改最后一项上 php 脚本的输出,以便“}”之后没有逗号。有人告诉我这是一个 AJAX 问题,但我不知道从哪里开始。

4

4 回答 4

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. 这样,您就不必担心在$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 回答
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 回答