我目前正在使用dart调用JavaScript函数,该函数接收JSON字符串和成功回调。
来自JavaScript的回调应该将响应作为JSON字符串返回。但是我无法从dart中返回的Proxy获取此信息。调试时,我可以在代理上看到_id,_ port和hashCode。
如何从代理商处获取所需信息?
代码段:
void init()
{
_mJSProxy= js.retain(new js.Proxy(js.context.Test));}
}
void testRequest(String p_request)
{
_mJSProxy.test(js.map(p_request), new js.Callback.once(onCallbackSuccess));
}
void onCallbackSuccess(var response, var httpRequest)
{
// response & httpRequest is a Proxy
// How to get the required information from them?
}
答案 0 :(得分:2)
当返回的类型不是js.Proxy
,bool
,num
或String
时,将使用html.Element
对象。返回js.Proxy
时,您必须知道底层Js对象上的结构是什么才能使用它。例如,如果Js对象是XMLHttpRequest,您将能够像这样使用它:
js.Proxy p = // proxy on XMLHttpRequest
String result = p.responseText;
// '.responseText' is handled by noSuchMethod and the call is done on Js side
在您的情况下,如果response
是Proxy
并且您想在Dart中复制Json结构,则可以使用:
import 'dart:convert';
String jsonValue = js.context.JSON.stringify(reponse);
Map dartJson = JSON.decode(jsonValue);
旁注:您必须使用Map
作为js.map(...)
的参数。在您的代码中,您使用String
。