如何使用在我的宿主项目中声明并在生成的 FunScript 代码中通过 Ajax 提供的类型?
例如,假设我声明了一个类型 T,然后创建一个以该格式提供数据的 REST 端点。现在,如果我想加载数据并从 FunScript 使用它,它不再是类型 T。
根据Alfanso的答案编辑解决方案:
假设类型"MyType"是在基本 F# 项目中定义的,并且与本地主机上提供的此类型匹配的数据:6543/myData
let start () =
async{
let url = "http://localhost:6543/myData"
let req = System.Net.WebRequest.Create(url)
let! data = req.AsyncGetJSON<MyType list>()
Globals.window.alert( (sprintf "%A" data) )
}
|> Async.StartImmediate
我错过的是
- 要求。AsyncGetJSON
- 使用 Async.StartImmediate
您能否发布一些代码以更好地了解您到底想做什么?作为参考,您可以在这个小项目中看到如何使用 FunScript.HTML 扩展交换类型安全 JSON 值的示例。在这种情况下:
- 使用具有
CLIMutable
和System.Data.Linq.Mapping.Table
属性的 F# 记录在服务器、客户端和数据库之间共享类型:源 - 对于服务器,我正在使用 ASP.NET Web API,它透明地将类型作为 JSON 发送:
- 在客户端中,我使用的是 FunScript.HTML 的
WebRequest.AsyncGetJSON<'T>
扩展,它在后台只是发出一个XMLHttpRequest
,使用浏览器JSON.parse
方法解析结果,并使用unbox<'T>
将对象"投射"为所需的类型:这里、这里和这里。
如果要在 F# 中以静态类型方式使用动态类型,unbox<'T>
是经常必须使用的小技巧。
我希望这有帮助!