[英]Unexpected token . in JSON at position 3 when making a POST HTTP Call in Angular
[英]HTTP Post in Angular using FormData causes Unexpected Token error
我目前在使用 Angular 和 Capacitor 的 Ionic 应用程序的功能中有这一部分。 该函数用于使用 FormData 帖子上传文件。
var data = new FormData();
data.append(name, blobFile, "TestName");
data.append('fileId', params.fileId);
data.append('pagenumber', params.pageNum);
data.append('appid', this.appMod.appId);
data.append('sessionid', this.appMod.sessionId);
...
return this.http.post(
webServiceUrl,
data,
{headers: new HttpHeaders({'Content-Type': undefined})},
);
this.http
是 Angular HttpClient
。 当此部分运行时,它会到达http.post
但是返回的是以下错误
SyntaxError: Unexpected token o in JSON at position 1
检查网络活动,这篇文章实际上从未发出任何网络请求,让我相信这不是后端的问题
根据我们的测试,我们尝试设置'Content-Type': 'application/x-www-form-urlencoded'
并在 HttpOptions 中添加responseType: 'text'
但是两者都没有解决问题。 此外,我一再确保webServiceUrl
是正确的。
我不知道是什么导致了这个问题,所以任何见解都会有所帮助
似乎有一些早期版本在检测或设置multipart/form-data
方面存在问题- 您应该按照这个 SO answer使用的Content-Type
。
我已经验证,在 Angular 14 中使用您的确切代码时, Content-Type
设置正确,如果在将FormData
对象传递给HttpClient
的post
方法时未指定Content-Type
,则发送请求。
return this.http.post(webServiceUrl, data, {
// headers: new HttpHeaders({ 'Content-Type': '' }),
});
您可能仍需要设置responseType: 'text'
如前所述。
所以你的决议将是
Content-Type
,因为它是从传递的对象中推断出来的responseType
设置为与服务器的返回类型匹配Content-Type
或导致冲突的HttpInterceptor
s
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.