之前類似的方法用過 $.post, $.get,$.ajax,還是第一次用這個 $.getJSON。
前三個都是用作異步請求的,那么最后一個呢?其實也是異步請求的,和 $.get 最類似,因為他也是將數據放在了 url上面。
代碼:
// 頁面一加載就請求服務器,獲取當前用戶的筆記本數據 function loadPageNotebooks() { var page = $(document).data('page'); var userId = getCookie('userId'); var url = 'notebook/page.do'; var data = { userId : userId, page : page }; // 從服務器拉取數據 $.getJSON(url, data, function(result) { console.log(result); if (result.state == 0) { var notebooks = result.data; showPageNotebooks(notebooks, page); $(document).data('page', ++page); } else { alert(result.message); } }); }
后台代碼:
/** * 獲取當前用戶的全部筆記本,以json的形式響應回去 * @param userId * @param page * @return */ @RequestMapping("/page.do") @ResponseBody public Object page(String userId, Integer page) { List<Map<String, Object>> list = notebookService.listNotebooks(userId, page); return new JsonResult(list); }
小總結:
$.getJSON() 是專門為 ajax 獲取 json 數據而設置的,並且支持"跨域"調用,其語法的格式為:
getJSON( url , [data] , [callback] )
其中三個分別為:
- url:string類型, 發送請求地址
- data :可選參數, 待發送 Key/value 參數 ,同 get,post 類型的 data
- callback :可選參數,載入成功時回調函數,同 get,post 類型的 callback
JSON 是一種理想的數據傳輸格式,它能夠很好的融合與 JavaScript 或其他宿主語言,並且可以被 JS 直接使用。使用 JSON 相比傳統的通過 GET、POST 直接發送“裸體”數據,在結構上更為合理,也更為安全。至於 jQuery 的 getJSON() 函數,只是設置了 JSON 參數的 ajax() 函數的一個簡化版本。這個函數也是可以跨域使用的,相比 get()、post() 有一定優勢。另外這個函數可以通過把請求 url 寫成 "myurl?callback=X" 這種格式,讓程序執行回調函數X。
注:數據最終還是通過 url 后面通過 get 方式發送數據出去的,這就決定了,發送的 data 數據量不能太多【get方式最大4KB】,否則造成 url 太長接收失敗(getJSON方式是不可能有post方式遞交的)。