typescript 我在angular/typscript前端和www.example.com后端获取从发布请求返回的数据时遇到问题asp.net

w1e3prcc  于 2022-12-14  发布在  TypeScript
关注(0)|答案(3)|浏览(127)

我正在开发一个依赖于后端处理的Web应用程序。我正在从我的Angular(v14)/Typescript前端向ASP.NET后端发送一个post请求。
后端代码

[HttpPost]
public async Task<string> ProcessExcelFile(IFormFile fileData, IFormCollection data)
{
      string guid = await processor.ProcessFile(fileData, data) //Imp not important for question.
    
      return guid;
}

前端代码

var guid: string = "";
this.http.post<string>('/api', formData).subscribe(result => {guid = result;});

我已经通过调试确认了后端被正确命中,并返回了正确的数据。
但是在我调用post请求后,前端“guid”是空的。我在这里做错了什么?
后端处理可能需要几秒钟,是这个问题吗?我该怎么办?

dohp0rv5

dohp0rv51#

如果是JSON响应,您应该能够这样做:
//后端响应
第一个
如果不是JSON响应,请分享一下响应的相似之处。

如果回复仅为文本,请更新:

let guid: string;
this.http.post<string>('/api', formData,{ responseType:'text'}).subscribe(result => {
    guid = result;
});
of1yzvn4

of1yzvn42#

通过浏览代码片段,不返回IActionResult对我来说很突出,因此您可以给予一下并检查它是否解决了问题

[HttpPost]
public async Task<IActionResult> ProcessExcelFile(IFormFile fileData, IFormCollection data)
{
  string guid = await 
  processor.ProcessFile(fileData, data) //Imp not important for question.

  return ok(guid);
}

这基本上会发送一个OK API响应,其中的内容是guid

fykwrbwg

fykwrbwg3#

它看起来像后请求将不会最终确定,直到它所在的函数,从一个按钮点击网页上开始完成。
我没有在post请求所在的函数中创建guid变量,而是将其改为一个全局变量。现在我在guid变量中获得了正确的数据,但只有在button press函数完成之后。

this.http.post<string>('/api', formData).subscribe(result => {this.guid = result;});

相关问题