zoukankan      html  css  js  c++  java
  • fetch API

    学习fetch API。

    总结:

    fetch('sample.txt').then((res)=>{

         //这里返回的是一个http响应body

         console.log(res);

       

    Body 类定义了以下方法 (这些方法都被 Request 和Response所实现)以获取body内容. 这些方法都会返回一个被解析后(也就是说已经被resolve()或者reject()并被解析成相应特定格式的东西了,所以可以被then!!)的promise对象和数据.

    • arrayBuffer()
    • blob()
    • json()
    • text()
    • formData()

    所以fetch('sample.txt').then((res)=>{return res}).then((res)=>{  console.log(res.text())  });

    //以上是一个简单的介绍

    })

    我个人理解是对XHR的简化,

    因为XmlHttpRequest在原生中要写好长好长,

    出现JQuery这种可以简化的写法,如果原生带了Fetch,那么就简化了好多好多。

    *学习Fetch需要对Promise和Arrow Function有一些了解

    备注:请打开live-server进行测试。 

    源代码:(请粘贴到VSCode中学习)

    <!DOCTYPE html>
    <html lang="en">

    <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Fetch API Sanbox</title>
    </head>

    <body>

    <button id="getText">Get Text</button>
    <button id="getUsers">Get JSON</button>
    <button id="getPosts">Get API DATA</button>

    <hr>

    <div id="output"></div>
    <form action="" id="addPosts">
    <div>
    <input type="text" id="title" placeholder="Title">
    </div>
    <div>
    <textarea id="body" placeholder="Body"></textarea>
    </div>
    <input type="submit" value="Submit">
    </form>

    </body>

    <script>

    //To learn this, you'd better familiar with..
    // * arrow function
    // * promise


    document.getElementById('getText')
    .addEventListener('click', getText);
    document.getElementById('getUsers')
    .addEventListener('click', getUsers);
    document.getElementById('getPosts')
    .addEventListener('click', getPosts);
    document.getElementById('addPosts')
    .addEventListener('submit', addPosts);



    function getText() {

    // console.log(123);
    // fetch('sample.txt')
    // .then( function(res){
    // return res.text(); //promise
    // })
    // .then(function(data){
    // console.log(data);
    // });


    /* much cleaner way */
    fetch('sample.txt')
    .then((res) => res.text())
    .then((data) => {

    document.getElementById('output').innerHTML = data;

    })
    .catch((err) => console.log(err));

    }



    function getUsers() {
    fetch('users.json')
    .then((res) => res.json())
    .then((data) => {
    let output = '<h2>Users</h2>';
    data.forEach(function (user) {
    output += `
    <ul>
    <li>ID: ${user.id}</li>
    <li>Name: ${user.name}</li>
    <li>:Email: ${user.email}</li>
    </ul>
    `;
    });

    document.getElementById('output').innerHTML = output;

    })
    }





    function getPosts() {

    fetch('https://jsonplaceholder.typicode.com/posts')
    .then((res) => res.json())
    .then((data) => {
    let output = '<h2>Posts</h2>';
    data.forEach(function (post) {
    output += `
    <div>
    <h3>${post.title}</h3>
    <p>${post.body}</p>
    </div>
    `;
    });

    document.getElementById('output').innerHTML = output;

    })
    }

    function addPosts(e) {


    e.preventDefault();

    let title = document.getElementById('title').value;
    let body = document.getElementById('body').value;

    fetch('https://jsonplaceholder.typicode.com/posts', {
    method: 'POST',
    headers: {
    'Accept': 'application/json, text/plain, */*',
    'Content-type': 'application/json'
    },
    body: JSON.stringify({ title: title, body: body })
    })
    .then((res) => res.json())
    .then((data) => console.log(data));


    }

    </script>

    </html>

    文件:

    sample.txt:

    I am a sample text file

    users.json:

    [{
    "id":0,
    "name":"rick",
    "email":"rick@gmail.com"
    },
    {
    "id":2,
    "name":"Glenn",
    "email":"glenn@gmail.com"
    },
    {
    "id":3,
    "name":"Negan",
    "email":"negan@gmail.com"
    }]
  • 相关阅读:
    linux下java调用.so文件的方法1: JNI
    在Eclipse中用SWT设计界面
    转:中文编码杂谈
    使用ObjectInputStream的readObject()方法如何判断读取到多个对象的结尾
    Java log4j详细教程
    java没有条件编译
    HTML参考手册
    javadoc 生成帮助文档时,注意以下几点
    Java中取小数点后两位(四种方法)
    iOS开发UI篇—使用UItableview完成一个简单的QQ好友列表(二)
  • 原文地址:https://www.cnblogs.com/eret9616/p/8575216.html
Copyright © 2011-2022 走看看