将可变数据添加到JSON

时间:2012-06-30 02:57:21

标签: javascript json jwplayer

我有以下Javascript用于使用jwplayer播放音乐文件作为播放列表

function playAllAudio() {
var audioDiv = "<div id='audioplayer'></div>";
    //Get ids from selected files
var sData = $('input', oTable.fnGetNodes()).serialize();

$.post("mediaStream.do", {OID : sData},function(data) {     
    jwplayer('audioplayer').setup({
        'controlbar': 'bottom',
        'width': '470',
        'height': '24',
        //'playlist': [{file:'mp3:audio/audioMotion'},{file:'mp3:audio/audioTangled'},{file:'mp3:audio/audioSunHands'}],
         'playlist': data,
        'provider': 'rtmp',
        'streamer': 'rtmp://XXXXXXX.cloudfront.net:1935/cfx/st',
        'modes': [
            {type: 'flash', src: 'https://YYYYYYYYY.cloudfront.net/player.swf'}
        ]
    });

});
}

将数据动态创建为JSON字符串,其中值是为jwplayer格式化的歌曲文件名

var data = "[{file:'mp3:audio/audioMotion'},{file:'mp3:audio/audioTangled'}]";

然而,当我使用变量'data'时,jwplayer不起作用。如何使用从服务器传递到javascript的数据?

2 个答案:

答案 0 :(得分:3)

动态创建的数据是JSON字符串,但jwplayer的playlist配置应该是一个数组,您必须首先将字符串覆盖到数组:

var data = "[{file:'mp3:audio/audioMotion'},{file:'mp3:audio/audioTangled'}]";
data = JSON.parse(data); // with out IE8-

但是IE8中不支持JSON,你可以使用Douglas Crockford的json2来修复它。

答案 1 :(得分:0)

您可以像播放一样来传递它,作为来自mediaStream.do调用的响应。

你确定json有效吗?您是否尝试使用http://jsonlint.com/验证回复?