如何获取 fetch api 的字符串响应并将其分配给变量?
Posted
技术标签:
【中文标题】如何获取 fetch api 的字符串响应并将其分配给变量?【英文标题】:How to get string response of fetch api and assign it to a variable? 【发布时间】:2020-11-17 21:21:23 【问题描述】:我正在使用 fetchApi 向后端发送请求,响应仅作为字符串(不在 json 正文中)出现
这是我的前端代码:
async decryptText()
let response = await this.getDecryptedText(this.entry.text, this.user.userId)
if(response)
console.log(response)
async getDecryptedText(inputText: string, userId: number)
let url = "http://localhost:8080/getDecryptedText?textToDecrypt=" + inputText + "&userId=" + userId;
return fetch(url);
但我无法像其他 json 响应那样解析响应,因为它只是一个字符串。
当我将它打印到控制台时,输出是这样的:
我只想打印到控制台响应字符串
如何获取字符串响应并将其分配给变量?
我已经按照答案编辑了代码。
【问题讨论】:
如果不是 JSON 就不要调用response.json()
。
另外getDecryptedText()
没有声明为async
所以你不能await
它。
如果你使用 Angular,你也可以试试HttpClient
。它的用途更广泛。
我已经编辑了代码和输出。我仍然无法将其打印到控制台
【参考方案1】:
await
表示等到 promise 解决。所以你不应该使用.then
回调函数。应该是,
async decryptText()
let response = await this.getDecryptedText(this.entry.text, this.user.userId)
// promise is resolved here with success or failure
if(response)
console.log(response) // you should get result here
【讨论】:
我已经编辑了代码和输出。我仍然无法将其打印到控制台cosonole.log(response)
打印什么?【参考方案2】:
希望对你有帮助:
decryptText()
this.getDecryptedText(this.entry.text, this.user.userId)
.then(response => response.json())
.then(response =>
console.log(response)
)
getDecryptedText(inputText, userId)
let url = "http://localhost:8080/getDecryptedText?textToDecrypt=" + inputText + "&userId=" + userId;
return fetch(url);
【讨论】:
未捕获(承诺中):SyntaxError:JSON 中位置 0 的意外标记 a SyntaxError:JSON 中位置 0 的意外标记 a【参考方案3】:尝试打印
console.log(response.body)
因为,你的反应是有理有据的。
【讨论】:
不起作用:(它将整个身体打印为可读流 在一些 api 测试平台(如 postman)上检查您的 api,并向我们展示结果。 我希望这能解决你的问题***.com/a/40403285/8129656以上是关于如何获取 fetch api 的字符串响应并将其分配给变量?的主要内容,如果未能解决你的问题,请参考以下文章