Mobile 在webview中通过ajax检索存储在本地存储中的json文件
我有一个针对移动设备的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“ 首先,这项建议可能得不到政府的支持。实际上是调用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”。我做错了什么?我如何让它工作?当我尝试用谷歌搜索时,没有太多的
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文件,有几种方法可供参考
jQuery.ajax()
<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);
}