ajax返回String型別導致的flowplayer報錯p.replace is not a function問題
阿新 • • 發佈:2019-01-04
今天用flowplayer拉流遇到了一個比較奇葩的問題,大致思路是js根據頁面的名稱採用ajax從後臺獲取號碼,然後用號碼建立任務輸出rtmp流,flowplayer進行播放,但是flowplayer初始化的時候報了個p.replace is not a function的錯誤,大致是說flowplayer庫裡的某個函式沒定義吧,一直以為是庫引用的問題,換了半天也沒解決,最後一層層跟蹤,發現直接用名稱建立任務就正常,根據號碼就不正常,所有問題肯定出在ajax獲取號碼這一步,一開始寫的是返回String,改為返回List<String>就可以了,這種問題非常隱蔽,因為返回String的時候跟蹤程式碼,返回的值也正常,估計是格式不對,導致了後面的錯誤,報錯又是在引用庫的js程式碼裡。下面附上程式碼。
java程式碼:
@RequestMapping(value = "getTerminalNumber") @ResponseBody public 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; } });