Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/450.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将JSON格式的数据从WebView传递到HTML页面_Java_Javascript_Android_Json_Webview - Fatal编程技术网

Java 如何将JSON格式的数据从WebView传递到HTML页面

Java 如何将JSON格式的数据从WebView传递到HTML页面,java,javascript,android,json,webview,Java,Javascript,Android,Json,Webview,我试图将JSON格式的数据从Android WebView传递到HTML页面。但是,每当我试图解析原始JSON数据时,应用程序就会崩溃,我希望原始JSON数据的格式是{“key”:“data”} 我的应用程序的目的是解释这个JSON数据,将其形成一个值数组,并将其发送到HTML页面。这是正确的方法吗 这是我的WebView代码 public class MyWebView extends Activity { WebView mWebView; public void onCr

我试图将JSON格式的数据从Android WebView传递到HTML页面。但是,每当我试图解析原始JSON数据时,应用程序就会崩溃,我希望原始JSON数据的格式是
{“key”:“data”}

我的应用程序的目的是解释这个JSON数据,将其形成一个值数组,并将其发送到HTML页面。这是正确的方法吗

这是我的WebView代码

public class MyWebView extends Activity {
    WebView mWebView;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.web_view);

        mWebView = (WebView) findViewById(R.id.webviewSch);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.addJavascriptInterface(this, "webConnector");
        mWebView.loadUrl("file:///android_asset/table.html");
    }

    public String load() {
        return "{\"key\":\"data\"}";
    }
}
这是HTML代码

<html>
<head>
<title>Test</title>
<script type="text/javascript">

function loader() {
    var jsonData = window.webConnector.load();
}

</script>
</head>
<body onload="loader()">
Do nothing
</body>
</html> 

我复制粘贴了你的代码,它工作了(没有显示任何内容,因为你没有显示数据),但是从Javascript到Android的回调被正确执行。您可以使用以下代码进行检查:

    WebView mWebView = (WebView) findViewById(R.id.webView1);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.addJavascriptInterface(this, "webConnector");
    mWebView.addJavascriptInterface(this, "toaster");
    mWebView.loadUrl("file:///android_asset/table.html");
    }

    public String load() {
        Log.e("HelloJavascript","HelloJavascript");
        return "{\"key\":\"data\"}";
    }

    public void print(String message){
        Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
    }
还有HTML

    <html>
    <head>
    <title>Test</title>
    <script type="text/javascript">

    function loader() {
        var jsonData = window.webConnector.load();
        toaster.print(jsonData);
    }

    </script>
    </head>
    <body onload="loader()">
    Do nothing
    </body>
    </html> 

试验
函数加载器(){
var jsonData=window.webConnector.load();
烤面包机。打印(jsonData);
}
无所事事

从日志中发布堆栈跟踪。我将emulator更改为4.0.3,现在对我有效。感谢您的回复。我试过你的代码,但还是很难用。然而,在我将emulator更改为4.0.3之后,它工作了!我不知道你以前使用的是什么,但我认为JavaScript界面在2.3“Uncaught TypeError:window.webConnector.load不是函数”中有一个bug,来源:myaddress“你知道为什么吗?@NaeimFard你有解决错误的方法吗?@ParthPatel真的是一个老错误。不记得了
    <html>
    <head>
    <title>Test</title>
    <script type="text/javascript">

    function loader() {
        var jsonData = window.webConnector.load();
        toaster.print(jsonData);
    }

    </script>
    </head>
    <body onload="loader()">
    Do nothing
    </body>
    </html>