前端攜帶List引數向後端傳送請求很困難?NO

2021-10-06 07:48:18 字數 2147 閱讀 5421

在最近的專案開發中,遇到了乙個前端向後端傳送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...