为了账号安全,请及时绑定邮箱和手机立即绑定

角度 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 关注
  • 167 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号