如题,用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