Blazor服务器,从Async Javascript函数获取返回值

ulydmbyx  于 2023-05-27  发布在  Java
关注(0)|答案(1)|浏览(225)

我绞尽脑汁试图让它工作,我可以从JS到Blazor获得同步的JS值,但异步不会被发送过来。
假设我有以下代码:
.剃刀

private async Task GetJSRemoteIP()
{
    string remoteIP = await JSRunTime.InvokeAsync<string>("getIPadr");
}

.js

function getIPadr() {
return "works!"
}

然而,如果我将js更改为带return的异步函数,它永远不会被发送回blazor,如下所示:
.js

async function getIPadr() {
const response = await fetch("https://api.ipify.org?format=json");
const jsonData = await response.json();
return jsonData;

}

我需要做什么才能将async函数的值返回到blazor中?

iqih9akk

iqih9akk1#

你的代码看起来很好。但是,在返回JSON数据时似乎存在问题。假设JSON对象没有隐式地转换为字符串类型。
由于响应是JSON,因此您可以直接访问数据成员并返回它。

return jsonData.ip;

或者,您可以显式地将其转换为字符串并将其发送回服务器。

return JSON.stringify(jsonData);

上面的代码需要在服务器端添加一个反序列化机制来从JSON中获取IP。

相关问题