Jquery DataTable AJAX跨域請求的解決方法及SSM框架下服務器端返回JSON格式數據的解決方法


如題,用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對象數組。。

記憶留存,有何不對請指正。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM