如題,用HBuilder開發APP,涉及到用AJAX跨域請求后台數據,剛接觸,費了不少時間。幸得高手指點,得以解決。
APP需要用TABLE來顯示數據,因此采用了JQ 的DataTable。 在實現過程中發現存在跨域的問題,采用以下方法解決。
$(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數組。如下格式:
{"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對象數組。。
記憶留存,有何不對請指正。
