如題,用HBuilder開發APP,涉及到用AJAX跨域請求後臺數據,剛接觸,費了很多時間。幸得高手指點,得以解決。java
APP須要用TABLE來顯示數據,所以採用了JQ 的DataTable。 在實現過程當中發現存在跨域的問題,採用如下方法解決。ajax
$(document).ready(function() { $('#example').DataTable({ "ajax": { "url":"http://Localhost:8085/System/nurse/getPatients", "dataTyle":"jsonp"}, "bPaginate": true, //翻頁功能 "bLengthChange": false, //改變每頁顯示數據數量 "bFilter": true, //過濾功能 "bSort": false, //排序功能 "bInfo": true, //頁腳信息 "bAutoWidth": true, //自動寬度 "columns": [{ "data": "name"
將 sAjaxSource 替換成 如上的 ajax ,設置數據類型爲 JSONP。當時這部分功能作好後,發現仍是報錯誤,獲取不到值。。報【Uncaught TypeError: Cannot read property 'length' of undefined】錯誤。。查來查去,發現是ajax獲取的值,不是須要的JSON格式。必定要JSON對象數組。必定要以data開頭的JSON數組。以下格式:json
{"data":[{"birthday":"2011/04/25","idtype":"身份證","number":"30","idcode":"1231131313","sex":"男","name":"常1","DT_RowId":"e58930f0ae5442fb8f67474422a76e95","statue":"治療中"}]}
因爲,後臺是採用SSM框架的。。獲取的數據自己就是JSON格式的。惟獨缺乏了data開頭,處理上只要在Control處理上對返回的 LIST對象數據進行再處理下就OK了,以下:跨域
@RequestMapping(value="getPatients", method=RequestMethod.GET) @ResponseBody public JSONObject getPatients() { List<PatientForApp> results=new ArrayList<PatientForApp>(); JSONObject json=null; try { results = service.findByPageforApp(); Map map = new HashMap(); map.put("data", results); json = JSONObject.fromObject(map); } catch (Exception e) { logger.error(e.toString(), e); /* ar.setFailMsg(Const.DATA_FAIL);*/ } return json; }
以上就實現了SSM框架經過Control處理返回JSON對象數組。。數組
記憶留存,有何不對請指正。app