在最近的專案開發中,遇到了乙個前端向後端傳送list型別資料的請求,各種嘗試結果總是失敗,特此總結下來。
後端介面
根據部落格型別id集合刪除部落格集合
("/ids"
)public
responseentity
<
void
>
deleteblogtypes (
@requestbody
list
<
long
>
blogtypeids )
因為js並沒有list資料型別,所以怎樣傳送請求是乙個很頭疼的問題
解法1思路一當然是採用json將引數序列化,然後進行攜帶請求引數,一位get請求和delete請求的引數資訊並不是放在請求體中,而是放在位址列中拼接引數,所以這裡採用post的請求比較好(位址列的url有限制,不可過長,批量刪除所需要拼接的id集合可能很多)
//宣告空的陣列
let blogtypeids =
;//在陣列新增資料,省略......
//傳送post請求
$.ajax(,
success
:function
(data, status, xhr),
error
:function
(error)}
);
ps:data中的資料,必須使用data: json.stringify(blogtypeids)
;如果使用
data:
這樣的格式則不能成功。
修改後台介面為post請求 (
"/ids"
)public
responseentity
<
void
>
deleteblogtypes (
@requestbody
list
<
long
>
blogtypeids )
感覺delete請求也是可以實現的,只是還沒有找到好的方法,之後遇到,在進行更新。
首先ajax要為post請求(post和delete請求的向後台傳參方式不同)
引數只能是json,並且形式只能是data:json.stringify(list)
,而不能是data:
。
陣列要使用json.stringify(list),解析成為乙個合法的json字串(可以在請求外解析,也可以在請求內的data中直接解析)
controller 加上@requestbody。
在網上還找到了很多別的解決方式,但是很可惜我好像並沒有成功,但可能也可以成功。之後有機會再進行測試
1.前台傳遞陣列型別的引數,不需要直接解析成json字串
let data=
;//在陣列新增資料,省略......
$.ajax(,
datatype:
"json"
,success
:function
(data)}
);
2.後台使用@requestparam(required = false, value = 「list」)
("/ids"
)public
responseentity
<
void
>
deleteblogtypes (
@requestparam
(value =
"blogtypeids"
)list
<
long
>
blogtypeids )
value = "blogtypeids,這個不能省,否則不能成功。
@requestparam(value = "blogtypeids") listblogtypeids
換成@requestparam(value = "blogtypeids") long blogtypeids
也是可以成功的。說明後台的list資料和陣列資料都可以使用這樣的方式來來實現
ps:解法二有待考證(我並沒有成功),參考部落格:
解法1經過測試已經成功。
前端向後端傳list 前端和後端該選什麼?
本文就來討論一下網際網路行業裡如何選擇就業方向的問題。有些程式設計師總是在討論我要參加工作了,我到底應該選擇前端還是後端呢?還有一些學生小夥伴,在校期間總是拿不準方向,等等諸如此類問題。那我本文章索性就分析一下前端和後端區別。給你乙個大概的方向,可能不夠專業,但有一定的借鑑意義。分析完前端 後端技術...
關於thinkphp,前端向後端傳遞引數的那些事
作為乙個初學者,目前邏輯判斷沒問題,資料庫查詢語言沒問題,但總是困擾在前端向後端傳遞陣列的地方。3種解決方案 1 前端傳遞陣列時,直接加 tostring 轉成字串。例如 9,10 tostring 變成 9,10 後端接收,按字串接收,再用explode post 引數 變成陣列 array 2 ...
Vue SpringBoot 前端向後台傳送多引數
vue springboot 前端向後台傳送多引數 前端包裝,後台通過map進行引數的接收。引數包括普通資料型別及陣列 其中node1 node2為核取方塊勾選的陣列,其他的為int或string型 後台jsonarray處理將其轉化 public resulttype function reque...