如何从JavascriptInterface返回JSONArray
How to return a JSONArray from JavascriptInterface
我试图使用Javascript捕获HTML的表单数据并将它们作为JSONArray返回给Java,但似乎JSONArray在JavascriptInterface中没有正确返回到Java。
Javascript在Chrome中工作完美,所以问题应该是在java方面或在界面上。
mWebView.loadUrl("javascript: FeArray=document.getElementsByTagName('input')");
mWebView.loadUrl("javascript: JSJSONArray = []");
mWebView.loadUrl("javascript: for(i=0;i<FeArray.length;i++) { fe=FeArray[i]; JSJSONArray.push({'id':fe.id,'type':fe.type,'checked':fe.checked,'value':fe.value});}");
mWebView.loadUrl("javascript: JSBridge.transferFromJS2Java(JSJSONArray)");
transferFromJS2Java是一个@JavascriptInterface函数,实现如下:
public class JSBridge{
@JavascriptInterface
public void transferFromJS2Java(String data) {
mJSONArray = new JSONArray(data);
}
}
这里mJSONArray是一个全局变量。
我想我可能无法以这种方式复制JSONArray。有没有更好的方法,我可以复制JSJSONArray从Javascript到Java?
解决方案是我在讨论中提到的,在Javascript中对JSONArray进行字符串化:
mWebView.loadUrl("javascript: var JSString = JSON.stringify(JSJSONArray);");
mWebView.loadUrl("javascript: JSBridge.transferFormData(JSString)");
然后在Java端,使用问题中的第二个代码段将String转换回JSONArray。
相关文章:
- 节点导出返回一个空对象
- ES6构造函数返回基类的实例
- 监视函数从服务返回不起作用,但作用域函数起作用
- 控制台返回var不是't定义,但它是
- 从函数返回角度承诺
- Javascript返回值只在循环中返回一次
- 从控制器返回后Ajax启动事件激发
- CKFinder 3为所选文件返回错误的URL
- 如何在d3.js中返回路径的y坐标
- 如何从jquery函数返回变量
- Angular js-返回一个包含类似
- JSONP请求返回结果,但也触发error_callback
- 如何使用Spring MVC将Facebook返回的响应数据保存在Java类中
- 从HTTPGET返回一个自定义对象列表,以便在Angular 2应用程序中使用
- JS验证ajax返回的html中的表单数据
- 使用谷歌应用程序脚本将服务器端数据表返回到客户端
- AJAX:$_GET不返回任何值
- 如何从JavascriptInterface返回JSONArray
- JSONArray返回日期作为对象
- 返回一个JSONArray作为HTTP实体