jQuery.ajax向后台傳遞數組問題


今天重溫了一個問題,jQuery.ajax向后台傳遞一個數組,而在后台接收不到該值 
前台js方法部分代碼如下:

//創建一個測試數組
var boxIds = new Array();
boxIds.push(12182);
boxIds.push(12183);
boxIds.push(12184);
//向后台交互
$.ajax({
    url: "/xxx",
    type: "GET",
    data: {
        "boxIds": boxIds,
        "boxType": 0,
        "time": new Date().getTime()
    },
    success: function(data) {
        //do sth...
    }
});

后台controller代碼(SpringMVC)

@ResponseBody
@RequestMapping(value = "/box/changeLock")
public String changeLock(final Long[] boxIds, final int boxType) {
    return locker_ChangeLockService.changeLock(boxIds, boxType);
}

觀察瀏覽器中發送的請求,可以發現參數如下:


圖片參數1


可以看到,參數的名字為boxIds[]而不是我們所定義的boxIds,也就是說,當傳遞數組時,會在我們的數組名稱后自動加上”[]”,所以后台接不到。


解決辦法: 
設置jQuery.ajax的tradional屬性

$.ajax({
    url: "/xxx",
    type: "GET",
    data: {
        "boxIds": boxIds,
        "boxType": 0,
        "time": new Date().getTime()
    },
    traditional: true,//這里設置為true
    success: function(data) {
        //do sth...
    }
});
修改之后重新發出請求,觀察瀏覽器:

請求參數2


這次參數不帶”[]”了,並且后台可以成功接收到該數組。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM