0
点赞
收藏
分享

微信扫一扫

11.6 Ajax增强


多次 replace

通过循环实现

var data={name:'张三',age:20}
var str='<div>{{name}}今年{{age}}岁了</div>'
var pattern =/{{\s*([a-zA-Z]+)\s*}}/

var patternResult=null
while((patternResult=pattern.exec(str))){
  str = str.replace(patternResult[0],data[patternResult[1]])
}
console.log(str)

实现简易的模版引擎

function template(id, data){
    var str=document.getElementById(id).innerHTML
    var pattern=/{{\s*([a-zA-Z]+)\s*}}/
        var patternResult=null
        while(patternResult=pattern.exec(str)){
            str=str.replace(patternResult[0],data[patternResult[1]])
        }
        return str
}

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>定义简易的模版引擎结构</title>
    <script src="./template.js"></script>
</head>
<body>
    <div id="user-box"></div>
    <script type="text/html" id="tpl-user">
        <div>姓名:{{name}}</div>
        <div>年龄:{{  age}}</div>
        <div>性别:{{  gender  }}</div>
        <div>住址:{{address  }}</div>

    </script>

    <script>
        定义数据
        var data={name:'zs',age:18,gender:'男',address:'北京'}

        //调用模版引擎
        var htmlStr=template('tpl-user',data)

        //渲染html结构
        document.getElementById('user-box').innerHTML = htmlStr
    </script>
</body>
</html>

Ajax 加强

使用 XMLHttpRequest 发起 Ajax 请求

XMLHttpRequest 的基本使用

简称 xhr,JQuery 中的 Ajax 函数就是基于 xhr 封装的.

使用 xhr 发起 get 请求

步骤:
🐸创建 xhr 对象
🐼调用 xhr.open()函数
🐨调用 xhr.send()函数
🐲监听 xhr.onredaystatechange 事件

xhr 对象的 readyState 属性

xhr 对象的 readyState 属性,用来表示当前 Ajax 请求所处的状态,每个 Ajax 请求必然处于一下的状态中的一个:


状态

描述

0

UNSENT

xhr 对象已被创建,但尚未调用 open 方法

1

OPENED

open()方法已经被调用

2

HEADERS_RECEIVED

send()方法已经被调用,响应头也已经被接收

3

LOADING

数据接收中,此时 response 属性中已经包含部分数据

4

DONE

Ajax 请求完成,这意味着数据传输已经彻底完成或失败

使用 xhr 发起带参数的 get 请求

使用 xhr 对象发起带参数的 GET 请求时只需要在调用 xhr.open 期间,为 URL 地址指定指定参数即可:

xhr.open('GET','链接?id=1')//参数为id

在 URL 地址后面拼接参数,叫做查询字符串

<script>
  // 1. 创建 xhr 的对象
  var xhr = new XMLHttpRequest();
  // 2. 调用 open 函数
  xhr.open('get', 'http://www.liulongbin.top:3006/api/getbooks?id=1&name=zs')
  // 3. 调用 send 函数
  xhr.send()
  // 4. 监听 onreadystatechange 事件
  xhr.onreadystatechange = function () {
    // 判断条件固定
    if (xhr.readyState === 4 && xhr.status === 200){
      //获取服务器响应的数据
      console.log(xhr.responseText)
    }
  }
</script>

查询字符串
  1. ** 什么是查询字符串?**
  1. **get 携带参数的本质 **

11.6 Ajax增强_JSON

URL 编码与解码
  1. 什么是 URL 编码

URL 地址中,只允许出现英文相关的字母、标点符号、数字,因此,在 URL 地址中不允许出现中文字符。

如果 URL 中需要包含中文这样的字符,则必须对中文字符进行编码(转义)。

URL 编码的原则:使用安全的字符(没有特殊用途或者特殊意义的可打印字符)去表示那些不安全的字符。

URL 编码原则:使用英文字符去表示非英文字符

11.6 Ajax增强_前端_02

  1. 如何对 URL 进行编码与解码

11.6 Ajax增强_json_03


注意事项

11.6 Ajax增强_ajax_04

使用 xhr 发起 POST 请求

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>使用xhr发起POST请求</title>
</head>
<body>
<script>
    // 1. 创建 xhr 的对象
    var xhr = new XMLHttpRequest();
    // 2. 调用 open 函数
    xhr.open('POST', 'http://www.liulongbin.top:3006/api/getbooks')
    // 3. 设置Content-Type 属性(固定写法)
    xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded')
    // 4. 调用 send 函数
    xhr.send('bookname=水浒传&author=施耐庵&publisher=天津图书出版社')

    // 5. 监听 onreadystatechange 事件
    xhr.onreadystatechange = function () {
        // 判断条件固定
        if (xhr.readyState === 4 && xhr.status === 200){
            //获取服务器响应的数据
            console.log(xhr.responseText)
        }
    }
</script>
</body>
</html>

数据交换格式

什么是数据交换格式

数据交换格式,就是服务器端与客户端之间进行数据传输与交换的格式。

重点学习 JSON

11.6 Ajax增强_json_05

XML
  1. 什么是 XML

XML 的英文全称为 EXtensible Markup Language ,即可扩展标记语言。

<!DOCTYPE html>
<html lang="en">
	<head>
     <title>使用xhr发起POST请求</title>
	</head>
  <body></body>
</html>

<note>  消息
	<to>ls</to>	发给ls
	<from>zs</from>  zs发送
	<heading>通知</heading> 标题
  <body>晚上开会</body> 内容
</note>

  1. XML 和 HTML 的区别

11.6 Ajax增强_JSON_06


缺点:

11.6 Ajax增强_JSON_07

JSON
  1. 什么是 JSON

概念:JSON的英文全称是 JavaScript Object Notation,即"JavaScript 对象表示法"。简单来讲,JSON 就是 Javascript 对象和数组的字符串表示法,它使用文本表示一个JS 对象或数组的信息,因此,JSON 的本质是字符串。

作用:JSON是一种轻量级的文本数据交换格式,在作用上类似于XML,专门用于存储和传输数据,但是 JSON 比XML 更小、更快、更易解析。

  1. JSON 的两种结构

JSON 就是用字符串来表示 JavaScript 的对象和数组。所以 JSON 中包含对象和数组两种结构,通过这两种结构的相互嵌套可以表示各种复杂的数据结构。
对象结构:

对象结构在 JSON 中表示为{}括起来的内容,数据结构为{key:value,key:value…}的键值对结构,其中,key 必须是使用英文的双引号包裹起来的字符串,value 的数据类型可以是数字、字符串、布尔值、null、数组、对象 6 种类型。

数组结构:

数组结构在JSON 中表示为[]括起来的内容。数据结构为[ “java”, “javascript”, 30, true …].数组中数据的类型可以是数字、字符串、布尔值、null、数组、对象6种类型

  1. JSON 语法注意事项
  • 属性名必须使用双引号包裹
  • 字符串类型的值必须使用双引号包裹
  • JSON 中不允许使用单引号表示字符串
  • JSON 中不能写注释
  • JSON 的最外层必须是对象或数组格式
  • 不能使用 undefined 或函数作为 JSON 的值

**JSON 的作用:**在计算机与网络之间存储和传输数据
**JSON 的本质:**用字符串来表示 JavaScript 对象数据或数组数据

  1. JSON 和 JS 对象的关系

11.6 Ajax增强_ajax_08

  1. JSON 和 JS 对象的互相转换

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
  <script>
    // JSON 字符串转换为 JS 对象
    var jsonStr='{"name":"zs","age":12,"gender":"man"}'
    var obj= JSON.parse(jsonStr)
    console.log(obj)
    //JS 对象转换为 JSON 字符串
    var obj2={name:"zs",age:18,gender:'man'}
    var json=JSON.stringify(obj2)
    console.log(json)
  </script>
</body>
</html>


举报

相关推荐

0 条评论