今天重溫了一個(gè)問題,jQuery.ajax向后臺(tái)傳遞一個(gè)數(shù)組,而在后臺(tái)接收不到該值。
前臺(tái)js方法部分代碼如下:
//創(chuàng)建一個(gè)測(cè)試數(shù)組var boxIds = new Array();boxIds.push(12182);boxIds.push(12183);boxIds.push(12184);//向后臺(tái)交互$.ajax({  url: "/xxx",  type: "GET",  data: {    "boxIds": boxIds,    "boxType": 0,    "time": new Date().getTime()  },  success: function(data) {    //do sth...  }});后臺(tái)controller代碼(SpringMVC)
@ResponseBody@RequestMapping(value = "/box/changeLock")public String changeLock(final Long[] boxIds, final int boxType) {  return locker_ChangeLockService.changeLock(boxIds, boxType);}觀察瀏覽器中發(fā)送的請(qǐng)求,可以發(fā)現(xiàn)參數(shù)如下:

可以看到,參數(shù)的名字為boxIds[]而不是我們所定義的boxIds,也就是說,當(dāng)傳遞數(shù)組時(shí),會(huì)在我們的數(shù)組名稱后自動(dòng)加上”[]”,所以后臺(tái)接不到。
解決辦法: 
設(shè)置jQuery.ajax的tradional屬性
$.ajax({  url: "/xxx",  type: "GET",  data: {    "boxIds": boxIds,    "boxType": 0,    "time": new Date().getTime()  },  traditional: true,//這里設(shè)置為true  success: function(data) {    //do sth...  }});修改之后重新發(fā)出請(qǐng)求,觀察瀏覽器:

請(qǐng)求參數(shù)2
這次參數(shù)不帶”[]”了,并且后臺(tái)可以成功接收到該數(shù)組。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注