亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

角度 10 | 郵寄 | 字符串數組追加 FormData

角度 10 | 郵寄 | 字符串數組追加 FormData

臨摹微笑 2023-03-03 15:24:29
我必須向 api 端點發出發布請求,但我收到錯誤狀態 500。name: "HttpErrorResponse"ok: falsestatus: 500statusText: "Internal Server Error"這是我的代碼:var selectedIds = ["31"];let sendData = new FormData();sendData.append('auth', this.dataService.REG_AUTH);sendData.append('identifier', identifier);sendData.append('selected[]', selectedIds); this.http.post<any>('APIENDPOINT', sendData).subscribe(data => {  console.log(data);}, error => {    console.log(error);});問題出在這一行:sendData.append('selected[]', selectedIds);我不知道如何將數組傳遞給 FormData。這是我們的 android 應用程序中的一個工作示例。我需要用 angular/typescript 語法轉換這個請求:@JvmSuppressWildcards@FormUrlEncoded@POST("APIENDPOINT")fun addData(    @Field("auth") auth: String,    @Field("identifier") identifier: String,    @Field("selected[]") selected: ArrayList<String>): Call<ResponseBody>到目前為止我所知道的:似乎角度沒有序列化數據,所以我嘗試了一些硬編碼修復,但這些都不起作用:sendData.append('selected%5B%5D', '%2231%22'); sendData.append('selected%5B%5D', '31');sendData.append('selected%5B%5D', 31);sendData.append('selected%5B%5D', '%5B%2231%22%5D'); sendData.append('selected%5B%5D', selectedIds); sendData.append('selected%5B%5D', JSON.stringify(selectedIds));如果我使用selected而不是selected[],那么我不會收到任何錯誤,但顯然沒有數據更新,所以我很確定這是一個序列化/解析問題。
查看完整描述

2 回答

?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

這個答案

FormData 的 append() 方法只能接受字符串或 blob 類型的對象。如果需要追加數組,請使用 JSON.stringify() 方法將數組轉換為有效的 JSON 字符串。

formData.append('selected[]', JSON.stringify(selectedIds));


查看完整回答
反對 回復 2023-03-03
?
POPMUISE

TA貢獻1765條經驗 獲得超5個贊

這statusCode 500是Internal Server Error,是服務器端的問題。因此,最好檢查它API是否可以收到您的請求。


FormData 的append()方法accept stringor blobtype 所以可以使用JSON.stringify()方法( formData.append('selectedIds', JSON.stringify(selectedIds));)。所以試試這個:


let selectedIds = ["31"];

let sendData = new FormData();

sendData.append('auth', this.dataService.REG_AUTH);

sendData.append('identifier', identifier);

sendData.append('selectedIds', JSON.stringify(selectedIds)); 


this.http.post<any>('APIENDPOINT', sendData).subscribe(data => {

  console.log(data);

}, error => {  

  console.log(error);

});


查看完整回答
反對 回復 2023-03-03
  • 2 回答
  • 0 關注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號