前臺AJAX傳數組,後臺的java接收(後臺接收前端發送的數組類型數據)兩種解決方法前端
第一種方法,前端將數組經過JSON.stringify()方法轉換爲json格式數據,後臺將接收的json數據轉換爲數組java
function search() { var equiNames = JSON.stringify($("#equiNames").val()); var startDate = $('#daterange-btn span').text().substring(0, 10); var endDate = $('#daterange-btn span').text().substring(13); $.ajax({ url : "dataAcquisition/report", type : "post", dataType : "json", data : { "equiNames" : equiNames, "startDate" : startDate, "endDate" : endDate }, success : function(result) { …… } } }); }
@RequestMapping("/report") public void report(String equiNames, String startDate, String endDate, HttpServletRequest request, HttpServletResponse response) throws ExecutionException, InterruptedException, IOException, ParseException { //將接收的json數據轉換爲數組 List<String> equiNameList = new Gson().fromJson(equiNames, new TypeToken<List<String>>() { }.getType()); List<DataAcquisitionVo> resultList = dataAcquisitionService.report(equiNameList, startDate, endDate); response.setContentType("application/json; charset=UTF-8"); response.getWriter().write(new Gson().toJson(resultList)); }
第二種方法,前端經過設置traditional屬性爲true直接傳遞數組 */,後臺經過對象接收ajax
function search() { var equiNames = JSON.stringify($("#equiNames").val()); var startDate = $('#daterange-btn span').text().substring(0, 10); var endDate = $('#daterange-btn span').text().substring(13); $.ajax({ url : "dataAcquisition/report", type : "post", dataType : "json", traditional : true,//用傳統方式序列化數據 data : { "equiNames" : equiNames, "startDate" : startDate, "endDate" : endDate }, success : function(result) { …… } } }); }
對象json
@RequestMapping("/report") public void report(ReportParaVo rp, HttpServletRequest request, HttpServletResponse response) throws ExecutionException, InterruptedException, IOException, ParseException { List<DataAcquisitionVo> resultList = dataAcquisitionService.report(rp); response.setContentType("application/json; charset=UTF-8"); response.getWriter().write(new Gson().toJson(resultList)); }
import java.util.List; public class ReportParaVo { private List<String> equiNames; private String startDate; private String endDate; public List<String> getEquiNames() { return equiNames; } public void setEquiNames(List<String> equiNames) { this.equiNames = equiNames; } public String getStartDate() { return startDate; } public void setStartDate(String startDate) { this.startDate = startDate; } public String getEndDate() { return endDate; } public void setEndDate(String endDate) { this.endDate = endDate; } }
第二種方法效果如圖所示數組