js读取本地json格式文件数据的几种实现方法,内有vue读取json示例代码。
目录
- 方法一:通过getJSON实现
- 方法二:使用原生js实现
- 方法三:使用AJAX实现
- 在vue中实现获取json格式文件并编辑
- 可能出现的问题
方法一:通过getJSON实现
getJSON
是jquery提供的读取json格式文件的方法
首先我们将html
中引入jquery
,可以通过百度CDN引入,代码如下:
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
然后就可以在script
中使用getJSON,getJSON代码格式如下:
$.getJSON("userinfo.json", function(data) { //data 代表读取到的json中的数据
});
参考示例:
第一步:创建一个json格式文件,取名为userinfo.json
[
{
"name": "张三",
"sex": "男"
},
{
"name": "李四",
"sex": "男"
},
{
"name": "王五",
"sex": "女"
}
]
第二步创建一个html文件(同json路径下),取名为index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>使用jquery读取json格式文件</title>
</head>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<body>
<div id="divframe">
<div class="loadTitle">
<input type="button" value="获取数据" id="btn" />
</div>
<div id="jsonTip"></div>
</div>
</body>
<script type="application/javascript">
//监听按钮点击事件
$("#btn").click(function() {
//使用getJSON读取userinfo.json文件中的数据
$.getJSON("userinfo.json", function(data) {
console.log(data);
//获取jsonTip的div
var $jsontip = $("#jsonTip");
//存储数据的变量
var strHtml = "123";
//清空内容
$jsontip.empty();
//将获取到的json格式数据遍历到div中
$.each(data, function(infoIndex, info) {
strHtml += "姓名:" + info["name"] + "<br>";
strHtml += "性别:" + info["sex"] + "<br>";
strHtml += "<hr>"
})
//显示处理后的数据
$jsontip.html(strHtml);
})
})
</script>
</html>
方法二:使用原生js实现
参考示例代码:
使用上面已经创建的json文件
将html文件修改
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>使用jquery读取json格式文件</title>
</head>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<body>
<div id="divframe">
<div class="loadTitle">
<input type="button" value="获取数据" id="btn" />
</div>
<div id="jsonTip"></div>
</div>
</body>
<script type="application/javascript">
//监听按钮点击事件
$("#btn").click(function() {
// 同文件夹下的json文件路径
var url = "userinfo.json"
// 申明一个XMLHttpRequest
var request = new XMLHttpRequest();
// 设置请求方法与路径
request.open("get", url);
// 不发送数据到服务器
request.send(null);
//XHR对象获取到返回信息后执行
request.onload = function () {
// 返回状态为200,即为数据获取成功
if (request.status == 200) {
var data = JSON.parse(request.responseText);
console.log(data);
//获取jsonTip的div
var $jsontip = $("#jsonTip");
//存储数据的变量
var strHtml = "123";
//清空内容
$jsontip.empty();
//将获取到的json格式数据遍历到div中
$.each(data, function(infoIndex, info) {
strHtml += "姓名:" + info["name"] + "<br>";
strHtml += "性别:" + info["sex"] + "<br>";
strHtml += "<hr>"
})
//显示处理后的数据
$jsontip.html(strHtml);
}
}
})
</script>
</html>
方法三:使用AJAX实现
参考示例代码:
使用上面已经创建的json文件
将html文件修改
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>使用jquery读取json格式文件</title>
</head>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<body>
<div id="divframe">
<div class="loadTitle">
<input type="button" value="获取数据" id="btn" />
</div>
<div id="jsonTip"></div>
</div>
</body>
<script type="application/javascript">
//监听按钮点击事件
$("#btn").click(function() {
$.ajax({
url: "userinfo.json",//同文件夹下的json文件路径
type: "GET",//请求方式为get
dataType: "json", //返回数据格式为json
success: function(data) {//请求成功完成后要执行的方法
console.log(data);
//获取jsonTip的div
var $jsontip = $("#jsonTip");
//存储数据的变量
var strHtml = "123";
//清空内容
$jsontip.empty();
//将获取到的json格式数据遍历到div中
$.each(data, function(infoIndex, info) {
strHtml += "姓名:" + info["name"] + "<br>";
strHtml += "性别:" + info["sex"] + "<br>";
strHtml += "<hr>"
})
//显示处理后的数据
$jsontip.html(strHtml);
}
})
})
</script>
</html>
在vue中实现获取json格式文件并编辑
示例代码:
创建json格式文件,取名为data
[{
"id": 10,
"name": "张三",
"stuNo": "A001",
"sex": "男",
"majorName": "计算机科学与技术",
"age": 18,
"operDate": "2020-10-27"
}, {
"id": 11,
"name": "李四",
"stuNo": "A002",
"sex": "女",
"majorName": "计算机科学与技术",
"age": 19,
"operDate": "2020-10-27"
}, {
"id": 12,
"name": "王五",
"stuNo": "A003",
"sex": "男",
"majorName": "计算机科学与技术",
"age": 19,
"operDate": "2020-10-27"
}]
创建一个html文件,引入
jquery.js
和vue.js
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>学生信息管理</title>
<link href="bootstrap/css/bootstrap.css" rel="stylesheet" />
<style type="text/css">
table thead tr th {
text-align: center;
}
</style>
</head>
<body>
<div style="padding:20px;" id="app">
<div class="panel panel-primary">
<div class="panel-heading">学生信息管理</div>
<table class="table table-bordered table-striped text-center">
<thead>
<tr style="text-align:left;">
<template v-for="headitem in head">
<th>{{headitem}}</th>
</template>
</tr>
</thead>
<tbody>
<template v-for="row in rows ">
<tr>
<td>{{row.id}}</td>
<td>{{row.name}}</td>
<td>{{row.stuNo}}</td>
<td>{{row.sex}}</td>
<td>{{row.majorName}}</td>
<td>{{row.age}}</td>
<td>{{row.operDate}}</td>
<td><a href="#" v-on:click="Edit(row)">编辑</a> <a href="#" v-on:click="Delete(row.Id)">删除</a>
</td>
</tr>
</template>
<tr>
<td><input type="text" class="form-control" v-model="rowtemplate.id" /></td>
<td><input type="text" class="form-control" v-model="rowtemplate.name" /></td>
<td><input type="text" class="form-control" v-model="rowtemplate.stuNo" /></td>
<td><input type="text" class="form-control" v-model="rowtemplate.sex" /></td>
<td><input type="text" class="form-control" v-model="rowtemplate.majorName" /></td>
<td><input type="text" class="form-control" v-model="rowtemplate.age" /></td>
<td><input type="text" class="form-control" v-model="rowtemplate.operDate" /></td>
<td><button type="button" class="btn btn-primary" v-on:click="Save">保存</button></td>
</tr>
</tbody>
</table>
</div>
</div>
<script src="http://libs.baidu.com/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vue@2.5.16/dist/vue.js"></script>
<script type="text/javascript">
//Model
var data = {
head: ["id", "姓名", "学号", "性别", "学科", "年龄", "操作时间", ],
rows: [],
rowtemplate: {
id: \'\',
name: \'\',
stuNo: \'\',
sex: \'\',
majorName: \'\',
age: \'\',
operDate: \'\'
}
};
//ViewModel
var vue = new Vue({
el: \'#app\',
data: data,
mounted() {
// 这里一定要使用常量 const来引用this,不然可能会出现this指向问题
const that = this
// 使用getjson读取数据
$.getJSON("data.json", function(data) {
// 将读取到的json数据赋值给rows
that.rows = data;
});
},
methods: {
Save: function(event) {
if (this.rowtemplate.Id == 0) {
this.rowtemplate.Id = this.rows.length + 1;
if (this.rowtemplate.name === \'\') {
alert("Name can not empty!");
} else {
this.rows.push(this.rowtemplate);
}
}
//还原模板
this.rowtemplate = {
id: 0,
name: \'\',
stuNo: \'\',
sex: \'\',
majorName: \'\',
age: \'\',
operDate: \'\'
}
},
Delete: function(id) {
for (var i = 0; i < this.rows.length; i++) {
if (this.rows[i].Id == id) {
this.rows.splice(i, 1);
break;
}
}
},
Edit: function(row) {
this.rowtemplate = row;
}
}
});
</script>
</body>
</html>
可能出现的问题
上述提供了三种方式来读取本地的json格式数据,还通过了vue的代码案例来试验了getJSON,在敲代码中可能会出现跨域问题,小伙伴们在出现这个问题的时候,不要慌张,这个是正常操作。
跨域问题,在控制台会打印如图代码:
浏览器跨域问题我写了一篇文章来设置解决跨域问题:windows下解决前端开发过程中浏览器跨域问题(操作案例为谷歌)
作者:歪歪
一名职场老菜鸟,梦想成为一名有头发的编程大牛。
以上是 js读取本地json格式文件数据的几种实现方法,内有vue读取json示例代码。 的全部内容, 来源链接: utcz.com/z/374731.html