Mobile 在webview中通过ajax检索存储在本地存储中的json文件

Mobile 在webview中通过ajax检索存储在本地存储中的json文件,mobile,uwp,Mobile,Uwp,我有一个针对移动设备的UWP应用程序。我在应用程序中有一个本地html和js文件,以及js文件需要调用的一些json文件。webview正确呈现和加载html文件和js文件 我的问题是能够在js文件中获取json文件。我尝试使用本地路径“ms appx”进行ajax调用-web:///www//demo_data//demo.json". 文件夹“www”位于根项目下。我从ajax调用中得到一个500错误,文本状态为“error”。我做错了什么?我如何让它工作?当我尝试用谷歌搜索时,没有太多的

我有一个针对移动设备的UWP应用程序。我在应用程序中有一个本地html和js文件,以及js文件需要调用的一些json文件。webview正确呈现和加载html文件和js文件

我的问题是能够在js文件中获取json文件。我尝试使用本地路径“ms appx”进行ajax调用-web:///www//demo_data//demo.json". 文件夹“www”位于根项目下。我从ajax调用中得到一个500错误,文本状态为“error”。我做错了什么?我如何让它工作?当我尝试用谷歌搜索时,没有太多的文档,否则我可能用谷歌搜索错误的东西

我尝试使用本地路径“ms appx”进行ajax调用-web:///www//demo_data//demo.json“

首先,这项建议可能得不到政府的支持。实际上是调用
XMLHttpRequest
,请求需要是
XMLHttpRequest
标准。如果直接在HTML中使用
ms appx web
调用ajax调用,您将获得错误详细信息:

jquery-3.2.1.min.js:4 XMLHttpRequest无法加载ms appx-web:///test.json. 跨源请求仅支持协议方案:http、数据、chrome、chrome扩展、https

因此,第二,文件应该在web服务器中。此方法可能无法加载本地文件。uwp应用程序不是web服务器,您不能使用
jQuery.ajax()
加载本地文件

如果您只想在
WebView
中显示json文件,有几种方法可供参考

  • 上传到web服务器并使用
    jQuery.ajax()
  • 通过uwp API加载Json文件,然后通过方法加载。例如(如果需要,解析json):

  • 将json文件的内容直接作为处理对象硬编码到js中。例如:

    <script type='text/javascript'> 
        function doSomething() {
            var data = '[{"name" : "Ashwin", "age" : "20"},{"name" : "Abhinandan", "age" : "20"}]';
            var mydata = JSON.parse(data);             
            document.getElementById('myDiv').innerText ="name:"+ mydata[0].name;
            return "done";
        }
    </script> 
    //Invoke the script by webview
    private async void btninvoke_Click(object sender, RoutedEventArgs e)
    {
        string result = await WebBrowser.InvokeScriptAsync("doSomething", null);
    }
    
    
    函数doSomething(){
    var data='[{“name”:“Ashwin”,“age”:“20”},{“name”:“Abhinandan”,“age”:“20”}];
    var mydata=JSON.parse(数据);
    document.getElementById('myDiv')。innerText=“name:”+mydata[0]。name;
    返回“完成”;
    }
    //通过webview调用脚本
    私有异步无效btninvoke_单击(对象发送方,路由目标)
    {
    string result=await WebBrowser.InvokeScriptAsync(“doSomething”,null);
    }
    

  • 更多详细信息请参考,有关
    WebView的更多详细信息请参考。

    文件不能位于服务器上。这是一个离线应用程序。这就是json文件位于本地存储中的原因。除了在加载过程中添加json之外,还有其他方法吗?@LazyProgrammer,所以其他两种方法不适合您?我不确定加载期间您在这里指的是什么,但可能是您可以尝试像加载普通文件一样加载json文件并从中读取内容。在uwp应用程序中,我们有StorageFIle相关API,在javascript中,您可以尝试
    <script type='text/javascript'> 
        function doSomething() {
            var data = '[{"name" : "Ashwin", "age" : "20"},{"name" : "Abhinandan", "age" : "20"}]';
            var mydata = JSON.parse(data);             
            document.getElementById('myDiv').innerText ="name:"+ mydata[0].name;
            return "done";
        }
    </script> 
    //Invoke the script by webview
    private async void btninvoke_Click(object sender, RoutedEventArgs e)
    {
        string result = await WebBrowser.InvokeScriptAsync("doSomething", null);
    }