js读取本地json格式文件数据的几种实现方法,内有vue读取json示例代码。

vue

目录

  • 方法一:通过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.jsvue.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>&nbsp;&nbsp;<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

回到顶部