角度 10 | 邮寄 | 字符串数组追加 FormData

我必须向 api 端点发出发布请求,但我收到错误状态 500。


name: "HttpErrorResponse"

ok: false

status: 500

statusText: "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[],那么我不会收到任何错误,但显然没有数据更新,所以我很确定这是一个序列化/解析问题。


临摹微笑
浏览 169回答 2
2回答

富国沪深

从这个答案:FormData 的 append() 方法只能接受字符串或 blob 类型的对象。如果需要追加数组,请使用 JSON.stringify() 方法将数组转换为有效的 JSON 字符串。formData.append('selected[]',&nbsp;JSON.stringify(selectedIds));

POPMUISE

这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));&nbsp;this.http.post<any>('APIENDPOINT', sendData).subscribe(data => {&nbsp; console.log(data);}, error => {&nbsp;&nbsp;&nbsp; console.log(error);});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript