1. Form表单
1.1 概念:
就是用于采集用户输入的信息,
1.2 组成部分:
表单标签, 表单域, 表单按钮
1.3 提交方式:
通过submit 提交表单
1.4标签属性:
① action: 向何处发送表单数据
② target:--------_blank新窗口打开;_self默认
③ method:以何种方式提交,类似type
④ enctype :发送表单数据之前对数据进行编码
1.5 GET POST区别
① get 方式适合用来提交少量的,简单的数据
② post 方式适合用来提交大量的,复杂的,或包含文件上传的数据
2.通过Ajax提交表单数据
1.1 监听表单提交事件
<script>
$(function () {
// 第一种方式
// $('#f1').submit(function () {
// alert('监听到了表单的提交事件')
// })
// 第二种方式
$('#f1').on('submit', function () {
alert('监听到了表单的提交事件2')
})
})
</script>
1.2 阻止表单默认行为
event.preventDefault()
1.3 获取表单数据
serialize()
3.模板引擎
1.1 好处
-
减少了字符串的拼接操作
-
使代码结构更清晰
-
使代码更易于阅读与维护
1.2 art-template模板引擎 使用步骤
-1 导入 art-template
- 在window全局,就多了一个函数,叫做 template('模板id',需要渲染的数据对象)
<script src="./lib/template-web.js"></script>
- 2 定义数据
var data = { name: 'zs', age: 20}
- 3 定义模板
<script type="text/html" id="tpl-user">
<h1>{{name}} ------ {{age}}</h1>
</script>
- 4 调用 `template` 函数
- 函数的返回值就是拼接好的模板字符串
var htmlStr = template('tpl-user', data)
- 4 渲染`HTML`结构
$('#container').html(htmlStr)
1.3 使用xhr
发起GET请求(求服务器上的数据资源)
①步骤:
- 创建
xhr
对象 -
调用
xhr.open()
函数 -
调用
xhr.send()
函数
// 1. 创建 XHR 对象
var xhr = new XMLHttpRequest()
// 2. 调用 open 函数
xhr.open('GET', 'http://www.liulongbin.top:3006/api/getbooks')
// 3. 调用 send 函数
xhr.send()
// 4. 监听 onreadystatechange 事件
xhr.onreadystatechange = function () {//xhr 是实例对象
if (xhr.readyState === 4 && xhr.status === 200) {//固定写法
//readyState 发送请求状态 status响应的状态
// 获取服务器响应的数据
console.log(xhr.responseText)//
}
}
② readyState
属性,用来表示当前 Ajax
请求所处的状态
③使用xhr
发起带参数的GET请求
var xhr = new XMLHttpRequest()
xhr.open('GET', 'http://www.liulongbin.top:3006/api/getbooks?id=1')
xhr.send()
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
console.log(xhr.responseText)
}
}
④使用xhr
发起POST
请求
步骤:
- 创建
xhr
对象 -
调用
xhr.open()
函数 -
设置 Content-Type 属性(固定写法)
-
调用
xhr.send()
函数,同时指定要发送的数据 -
监听
xhr.onreadystatechange
事件
// 1. 创建 xhr 对象
var xhr = new XMLHttpRequest()
// 2. 调用 open 函数
xhr.open('POST', 'http://www.liulongbin.top:3006/api/addbook')
// 3. 设置 Content-Type 属性(固定写法)
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
// 4. 调用 send 函数
xhr.send('bookname=水浒传&author=施耐庵&publisher=上海图书出版社')
// 5. 监听事件
xhr.onreadystatechange = function () {
//readyState 请求所处的状态
if (xhr.readyState === 4 && xhr.status === 200) {
console.log(xhr.responseText)
}
}
1.4 数据交换格式
① 定义:
服务器端与客户端之间进行数据传输与交换的格式
xhl :可扩展标记语言
XML和HTML的区别
XML
和 HTML
虽然都是标记语言,但是,它们两者之间没有任何的关系。
-
HTML
用来展示数据的 -
XML
用来存储数据的
4.JSON
①概念:
即“JavaScript 对象表示法” 就是对象和数组的用字符串表示
②对象结构
对象结构在 JSON
中表示为 { }
括起来的内容。数据结构为 { key: value, key: value, … }
的键值对结构。其中,key
必须是使用英文的双引号包裹的字符串,
value
的数据类型可以是数字、字符串(双引号)、布尔值、null、数组、对象6种类型。
不存在的值用null 不能用undefined.没有方法
③序列化 反序列化
要实现从 JSON
字符串转换为 JS
对象,使用 JSON.parse()
( 反序列号 ) 方法:
要实现从 JS
对象转换为 JSON
字符串,使用 JSON.stringify()
(序列化) 方法:
5. 封装自己的Ajax函数
①步骤
-
method
请求的类型 -
url
请求的URL
地址 -
data
请求携带的数据 -
success
请求成功之后的回调函数
6. axios
1.概念:
相比于原生的 XMLHttpRequest
对象,axios
简单易用。专注于网络数据请求的库
2.语法
<1> axios发起GET请求
语法:
axios.get('url', { params: { /*参数*/ } }).then(callback)
示列:
// 请求的 URL 地址
var url = 'http://www.liulongbin.top:3006/api/get'
// 请求的参数对象
var paramsObj = { name: 'zs', age: 20 }
// 调用 axios.get() 发起 GET 请求
axios.get(url, { params: paramsObj }).then(function(res) {///params查询
// res.data 是服务器返回的数据
var result = res.data
console.log(res)
})
<2> axios发起POST请求
语法:
axios.post('url', { /*参数*/ }).then(callback)
// 请求的 URL 地址
var url = 'http://www.liulongbin.top:3006/api/post'
// 要提交到服务器的数据
var dataObj = { location: '北京', address: '顺义' }
// 调用 axios.post() 发起 POST 请求
axios.post(url, dataObj).then(function(res) {
// res.data 是服务器返回的数据
var result = res.data
console.log(result)
})
<3> 直接使用axios发起请求
语法:
axios({
method: '请求类型',
url: '请求的URL地址',
data: { /* POST数据 */ },
params: { /* GET参数 */ }
}).then(callback)
① get请求
document.querySelector('#btn3').addEventListener('click', function () {
var url = 'http://www.liulongbin.top:3006/api/get'
var paramsData = { name: '钢铁侠', age: 35 }
axios({
method: 'GET',
url: url,
params: paramsData
}).then(function (res) {
console.log(res.data)
})
})
②post请求
document.querySelector('#btn4').addEventListener('click', function () {
axios({
method: 'POST',
url: 'http://www.liulongbin.top:3006/api/post',
data: {
name: '娃哈哈',
age: 18,
gender: '女'
}
}).then(function (res) {
console.log(res.data)
})
})
目录
② readyState 属性,用来表示当前 Ajax 请求所处的状态