標籤:方式 nts code ibm 技術分享 ret exception src object
五、伺服器端的 SpringMVC 如何返回 JSON 類型的字串。
請求:
$("#testJson8").click(function () { $.ajax({ url: "testReturnJsonValue", type: "post", success: function (result) { console.log(result); } });});
1.返回單個對象
handler 方法:
@ResponseBody@RequestMapping("/testReturnJsonValue")public Person testReturnJsonValue() { Person person = new Person(); person.setName("lily"); person.setAge(23); return person;}
在瀏覽器控制台正常列印了 Person 對象。
注意:這裡沒有指定 dataType。
2.返回多個對象
handler 方法:
@ResponseBody@RequestMapping("/testReturnJsonValue")public List<Person> testReturnJsonValue() { List<Person> personList = new ArrayList<>(); Person person = new Person(); person.setName("lily"); person.setAge(23); Person person2 = new Person(); person2.setName("lucy"); person2.setAge(33); personList.add(person); personList.add(person2); return personList;}
在瀏覽器控制條正常列印了 Person 數組。
3.返回 Map
@ResponseBody@RequestMapping("/testReturnJsonValue")public Map<String, Person> testReturnJsonValue() { Map<String, Person> map = new HashMap<>(); Person person = new Person(); person.setName("lily"); person.setAge(23); Person person2 = new Person(); person2.setName("lucy"); person2.setAge(33); map.put("1", person); map.put("2", person2); return map;}
瀏覽器控制台輸出:
4.在實際生產環境下的 Ajax 傳回值。
封裝一個傳回值類型:
public class AjaxResult implements Serializable {
public static final String RESULT_CODE_0000 = "0000";
public static final String RESULT_CODE_0001 = "0001";
private String code;
private String message;
private Object data;
public AjaxResult() { }
public String getCode() { return this.code; }
public void setCode(String code) { this.code = code; }
public String getMessage() { return this.message; }
public void setMessage(String message) { this.message = message; }
public Object getData() { return this.data; }
public void setData(Object data) { this.data = data; }}
實際使用:
@ResponseBody@RequestMapping("/testReturnJsonValue")
public AjaxResult testReturnJsonValue() { AjaxResult ajaxResult = new AjaxResult();
try { Map<String, Person> map = new HashMap<>(); Person person = new Person(); person.setName("lily"); person.setAge(23); Person person2 = new Person(); person2.setName("lucy"); person2.setAge(33); map.put("1", person); map.put("2", person2); ajaxResult.setData(map); ajaxResult.setMessage("success!"); ajaxResult.setCode(AjaxResult.RESULT_CODE_0000); } catch(Exception e) { e.printStackTrace(); ajaxResult.setMessage("fail!"); ajaxResult.setCode(AjaxResult.RESULT_CODE_0001); } return ajaxResult;}
六、Request Payload
(1)出現的條件:
contentType: ‘application/json;charset=utf-8‘
type:post
(2)具體請參看
http://xiaobaoqiu.github.io/blog/2014/09/04/form-data-vs-request-payload/
(3)建議盡量不要手動的去處理此種情況,能選用別的方式避免就盡量避免。
七、總結
主要介紹了SpringMVC 對 Ajax 的支援,對與 Ajax 資料如何組織,重點介紹了對錶單的支援。
SpringMVC—對Ajax的處理(含 JSON 類型)(3)