Brightcove Video Manager API,通过ID javascript获取播放列表

时间:2013-01-22 14:41:15

标签: javascript api typeerror brightcove

我对java脚本的整个想法都很陌生,我真的很难找到解决问题的方法。我已经使用了brightcove用于视频管理器的模板,该模板使用“获取所有播放列表URL”调用。我试图只是制作一个只有几个特定播放列表的菜单,并且在这样做时出现错误,无论我改变什么。截至目前我的主要错误是“Uncaught TypeError:无法读取未定义的属性'长度”。任何帮助都会非常感激。谢谢。

//Get PlayList by ID

function getPlaylistLindyURL(){

loadStart();
paging.playlistbyid = (paging.currentFunction == getPlaylistLindyURL)?paging.generic:paging.playlistbyid;
paging.currentFunction = getPlaylistLindyURL;
return apiLocation +
'?command=find_playlist_by_id&playlist_id=1990786315001&callback=showPlaylistByIDCallBack'
    + '&get_item_count=true&page_size=' + paging.size + '&page_number='+paging.playlistbyid
    +'&token='+readToken;         



//Playlist by ID callback

function showPlaylistByIDCallBack(o){

if(null == o.error){
    oCurrentMainVideoList = o.items;
    buildMAinVideoList();
    doPageList(o.total_count, "Videos");
}else{
    var message = (null!=o.error.message)?o.error.message:o.error;
    alert("Server Error: "+ message);
}
loadEnd();
}


//For PlayList by ID

function buildMAinVideoList() {

//Wipe out the old results
$("#tbData").empty();

// Display video count
document.getElementById('divVideoCount').innerHTML = oCurrentMainVideoList.length + "Video";
document.getElementById('nameCol').innerHTML = "Video Name";
document.getElementById('headTitle').innerHTML = "All Videos";
document.getElementById('search').value = "Search Videos";
document.getElementById('tdMeta').style.display = "none";
document.getElementById('searchDiv').style.display = "none";
document.getElementById('checkToggle').style.display = "none";
$("span[name=buttonRow]").hide();
$(":button[name=delFromPlstButton]").hide();


//For each retrieved video, add a row to the table
var modDate = new Date();
$.each(oCurrentMainVideoList, function(i,n){
    modDate.setTime(n.lastModifiedDate);
    $("#tbData").append(
        "<tr style=\"cursor:pointer;\" id=\""+(i)+"\"> \
        <td>\
            <input type=\"checkbox\" value=\""+(i)+"\" id=\""+(i)+"\" onclick=\"checkCheck()\">\
        </td><td>"
            +n.name +
        "</td><td>"
            +(modDate.getMonth()+1)+"/"+modDate.getDate()+"/"+modDate.getFullYear()+"\
        </td><td>"
            +n.id+
        "</td><td>"
            +((n.referenceId)?n.referenceId:'')+
        "</td></tr>"
    ).children("tr").bind('click', function(){
        showMetaData(this.id);
    })
});

1 个答案:

答案 0 :(得分:0)

从您发布的代码看起来oCurrentMainVideoList似乎没有在任何地方声明,所以这可能就是为什么它说它未定义...

如果你将它定义为一个全局变量,它必须是从它的外观,请确保你已经为它设置了一个值。但是你不应该使用全局变量,为你的函数创建命名空间,它有助于范围控制。

如果您想学习一些JS最佳实践,您应该从TekPub观看此视频: JS_UpToSpeed

你还应该花时间查看代码并在发布之前使其更具可读性,缺少缩进会使代码难以阅读,并且buildMAinVideoList中有多个大写字母。