簡介:
AJAX: Asynchronous JavaScript and XML(異步的JavaScript和XML)
JSON: JavaScript Object Notation(JavaScript 對象表示法)
請求常用格式
var 變量名= $.trim($("#标簽id").val()); //擷取标簽内容
$.ajax({
type:"POST", //請求方式(get…)
url:'請求位址' , //請求位址
data:{key:變量名,key:"value",…}, //發送的資料
dataType:'json', //發送的資料格式
cache:false, //不使用緩存(使用緩存)
async:false, //同步請求(異步請求)
success: function(data){ //回調函數
data資料處理 //data為背景傳回的資料
}
});
Json資料處理
背景處理
請求Json處理
1: 以RequestParam的方式接收
@RequestMapping(value = "/update")
@ResponseBody
public String updateAttr(@RequestParam ("id") int id) { //作為參數
int res=accomodationService.deleteData(id); //函數内部可以直接使用
return "success";
}
2以實體類的方式接收
@RequestMapping(value = "/add")
@ResponseBody
public String addObj(@RequestBody Accomodation accomodation) { //實體類作為參數
this.accomodationService.insert(accomodation); //内部直接使用
return "success";
}
3以map進行接收
@RequestMapping(value = "/update")
@ResponseBody
public String updateAttr(@RequestBody Map<String, String> map) { //map作為參數
if(map.containsKey("id"){
Integer id = Integer.parseInt(map.get("id"));
}
if(map.containsKey("name"){
String objname = map.get("name").toString();
}
return "success";
}
4以list進行接收
@RequestMapping(value = "/update")
@ResponseBody
public String updateAttr(@RequestBody List<Accomodation> list) {
for(Accomodation accomodation:list){
System.out.println(accomodation.toString());
}
return "success";
}
注: 這隻是簡單的接收前台資料的方式,企業中更多是自己進行請求資料的封裝,如pagedata等專門用來進行前端資料的處理和使用,或者分頁的工具類等等,當然如果大家有興趣可以利用上述方法進行簡單的前端請求資料封裝,在業務邏輯較為複雜的情況下,會極大的提高效率,controller中也不需要再對資料進行格式化處理.
傳回Json處理
1采用@ResponseBody注解
@ResponseBody這個注解通常使用在控制層(controller)的方法上,其作用是将方法的傳回值以特定的格式寫入到response的body區域,進而将資料傳回給用戶端。
@ResponseBody通過HttpMessageConverter中的方法實作控制層的資料轉化為json格式的字元串,至于轉化的方法,大家可以去檢視源碼.
2使用JSON-lib工具包進行資料轉換
JSON-lib包是一個beans,collections,maps,java arrays 和XML和JSON互相轉換的包.
具體包的使用在這裡就不多做贅述了.
關于前台處理的補充
注:
給對應的input指派使用 $("#id").val(json.id),
将json類型字元串轉換為json對象 var json=eval("("+data+")"),
可以使用 JSON.parse()方法将資料轉換為JavaScript對象,
可以使用 JSON.stringify()方法将 JavaScript對象轉換為字元串.