我的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>
我的问题是我需要弄清楚如何在LAST项目上更改php脚本的输出,以便在“}”之后没有逗号。我被告知这是一个AJAX问题,但我不知道从哪里开始。
答案 0 :(得分: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>
答案 1 :(得分: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>
答案 2 :(得分: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
循环......
答案 3 :(得分: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>