zoukankan      html  css  js  c++  java
  • 给网站写一个JSON,并远程请求。

    在使用json之前我们应该先了解一下什么是json?

    json全称JavaScript Object Notation,即js对象简谱, 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。。

    JSON可以作为一个对象或者字符串存在,前者用于解读 JSON 中的数据,后者用于通过网络传输 JSON 数据。 这不是一个大事件——JavaScript 提供一个全局的 可访问的 JSON 对象来对这两种数据进行转换。

    这一点也让人注意到json并不仅限于js环境。

    为了加载对象进入js程序,这个对象应包括属性名和数组索引,

    先看mdn上的一个对于访问json对象的ex;

    superHeroes["members"][1]["powers"][2]
    1. 首先我们有变量名 superHeroes,储存对象 。
    2. 在对象中我们想访问 members 属性,所以我们使用 ["members"]
    3. members 包含有对象数组,我们想要访问第二个元素,所以我们使用[1]
    4. 在对象内,我们想访问 powers 属性,所以我们使用 ["powers"]
    5. powers 属性是一个包含英雄技能的数组。我们想要第三个,所以我们使用[2]

    注意:

    • JSON 是一种纯数据格式,它只包含属性,没有方法。
    • JSON 要求有两头的 { } 来使其合法。最安全的写法是有两边的括号,而不是一边。
    • 甚至一个错位的逗号或分号就可以导致  JSON 文件出错。您应该小心的检查您想使用的数据(虽然计算机生成的 JSON 很少出错,只要生成程序正常工作)。您可以通过像 JSONLint 的应用程序来检验 JSON。
    • JSON 可以将任何标准合法的 JSON 数据格式化保存,不只是数组和对象。比如,一个单一的字符串或者数字可以是合法的 JSON 对象。虽然不是特别有用处……
    • 不像 JavaScript 标识符可以用作属性,在 JSON 中,只有字符串才能用作属性。

    做一个自己网页的json demo:

    1.首先在html中添加一个标签

    <div class="qianjing_say" id="say">

    </div>

    用于之后添加数据。

    2.此时你应该想好这个标签里应该添加什么数据,把数据写入json中,我这儿就把写好的json对象写好,为方便之后的远程请求

    就把它上传到github托管上,带服务器的也可以放在服务器上面。https://ceneasy.github.io/test/test.json

    将文件传上github的教程,我之后我会写一篇博客详细解说。

    {
      "squadName" : "2018年加密货币展望:将再疯狂一年",
      "homeTown" : "各种空气币横出,币市动荡,政府严加查管代币非法集资,加密货币的未来何去何从?",
      "third": "试试你能认出下面哪些虚拟币(滑稽.jpg)"
    }

    2.js程序

    var header = document.getElementById("say");

    定义一个变量获取id名为"say"的标签

    加载json

    这里使用这个名为XMLHTTPRequest的api用于远程请求

    定义一个变量为即将访问的url

    var requestURL = 'https://ceneasy.github.io/test/test.json';

    再定义一个http请求对象

    var request = new XMLHttpRequest();

    现在我们需要使用 open() 函数打开一个新的请求

    request.open('GET', requestURL);

     

    这个函数至少含有两个参数,其它的是可选参数。对于示例我们只需要两个强制参数

    • HTTP 方法,网络连接时使用。这个示例中 GET 就可以了,因为我们只要获得简单的数据。
    • URL,用于指向请求的地址。我们使用之前保存的变量。

    接下来,添加,两行代码,我们设定 responseType 为 JSON,所以服务器将知道我们想要返回一个 JSON 对象,然后发送请求 :

    request.responseType = 'json';
    request.send();


    最后一点内容涉及相应来自服务器的返回数据,然后处理它,添加如下代码在您先前的代码下方:

    request.onload = function() {
      var superHeroes = request.response;
      populateHeader(superHeroes); //调用填充数据的方法
      }
    接下来就是填充数据

    function populateHeader(jsonObj) {
    var myH1 = document.createElement('h2');   //定义创建标签的变量
    myH1.setAttribute("class","as")
    myH1.textContent = jsonObj['squadName'];  //填充内容进新标签中
    header.appendChild(myH1);   //将新标签填入老标签中
    var myH2 = document.createElement('p');
    myH2.setAttribute("class","as")
    myH2.textContent = jsonObj['homeTown'];
    header.appendChild(myH2);
    var myH3 = document.createElement('p');
    myH3.setAttribute("class","as")
    myH3.textContent = jsonObj['third'];
    header.appendChild(myH3);

    }

    这也就是我们json渲染出来的效果,另外注意一点,你可以用css定义数据标签的样式。



  • 相关阅读:
    图片滚动懒加载用jquery-lazyload 与手动Jquery 写
    穿梭框(filter过滤方法,sort排序 v-model)
    选择添加好友(包含 去重,删除splice 等) v-show(解决显示隐藏闪动问题)
    求数组中最小的数值(结合apply() call())
    Vue
    js递归
    使用kdf 元素来接收键盘的输入指令
    编辑滚动条样式
    【IntelliJ IDEA】Debug调试的使用记录
    福利:IntelliJ IDEA 破解激活教程
  • 原文地址:https://www.cnblogs.com/ceneasy/p/10059135.html
Copyright © 2011-2022 走看看