現有基類:
public class School { int name; int address; List<Student> students = new ArrayList<Student>(); } public class Student { int name; int sex; }
現在我需要通過ajax向后台傳輸一個包含所有學生集合的School對象:
傳輸的數據格式為:
school: { "name" : "清華大學", "address" : "北京", "students" : [{ "name" : "張三", "sex" : "20" },{ "name" : "李四", "sex" : "20" }] }
js 中的實現:
var school = {}; school.name = '清華大學'; school.address = "北京"; //此處使用的是 easyui 插件來獲取數據 var rows = $('#maintainTableId').datagrid('getSelections'); for (var i = 0; i < rows.length; i++) { school["students [" + i + "].name"] = rows[i].name; school["students [" + i + "].sex"] = rows[i].sex; } $.ajax({ url : url, type : 'POST', dataType : 'json', data : school, success : function() {} })
注意:
ajax 的請求參數 contentType 可能會影響到服務器端接受參數, 如果JS端發送的JSON數據(此處的數據指的是利用字符
串拼接為JSON格式的參數並不是本例中的JSON對象格式)為簡單常見的JSON格式則不會受影響,但是當JS發送到服務
器端的JSON數據比較復雜時(例如本例中的JSON包含數組),默認的contentType(application/x-www-form-urlencoded)
不能識別,需要更改為 'application/json' 才能識別。
contentType的設置參考: https://blog.csdn.net/m0_37572458/article/details/78622668?locationNum=6&fps=1