今天用flowplayer拉流遇到了一個比較奇葩的問題,大致思路是js根據頁面的名稱採用ajax從後台擷取號碼,然後用號碼建立任務輸出rtmp流,flowplayer進行播放,但是flowplayer初始化的時候報了個p.replace is not a function的錯誤,大致是說flowplayer庫裡的某個函數沒定義吧,一直以為是庫引用的問題,換了半天也沒解決,最後一層層跟蹤,發現直接用名稱建立任務就正常,根據號碼就不正常,所有問題肯定出在ajax擷取號碼這一步,一開始寫的是返回String,改為返回List<String>就可以了,這種問題非常隱蔽,因為返回String的時候跟蹤代碼,返回的值也正常,估計是格式不對,導致了後面的錯誤,報錯又是在引用庫的js代碼裡。下面附上代碼。
java代碼:
@RequestMapping(value = "getTerminalNumber")@ResponseBodypublic List<String> getTerminalNumber( @RequestParam String name) {//注意,返回List類型List<String> checkRet = new ArrayList<String>();String number = "";List<TerminalConfigPO> TerminalConfigPOs = terminalConfigDao.findByField("terminalName", name);if(TerminalConfigPOs.size()>0){number = TerminalConfigPOs.get(0).getE164Number();}checkRet.add(number);return checkRet;}
js代碼:
var telNumber;$.ajax({type: "POST",url: path+'/ajax/getTerminalNumber',cache: false,async:false,//同步data:{"name":name},dataType: "json",success: function (ret) {if(ret.length>0){telNumber = ret[0];}},error: function (ret) {return;}});