ajax
2018-08-27 本文已影响54人
GHope
ajax是什么?
Asynchronous Javascript And XML
上网怎么上的?
客户端:浏览器,前端(html、css、js、jquery)
服务端:现成的,比如百度、csdn等,后端(php、java、python)
有网
上网就是客户端向服务端发送请求,然后获取到服务端数据的过程
你是通过url的切换实现的,url就是网址,来得到不同的内容
ajax:在不刷新整个页面的前提下,完成了和服务端的交互,也就更新了网页里面的内容,一般都是局部更新
应用:nba直播,文字直播,用户注册,不更新页面加载下一页数据
ajax怎么使用?
(1)原生js实现
(2)jquery封装好的函数的用法
'content-type', 'application/x-www-form-urlencoded'
setRequestHeader
onreadystatechange
readyState
status
responseText
<!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>ajax实现</title>
</head>
<body>
</body>
</html>
<script>
// 原生的js实现ajax的技术
// 创建对象,
// XMLHttpRequest是高级浏览器创建ajax对象的方式
// IE8以下的创建方式不一样,只需了解即可
var xhr = new XMLHttpRequest()
// 和后端进行交互,交互的方式有两种,pc端:get、post 移动端:get、post、put、delete等
// 发送get请求
// 参数1:请求方式
// 参数2:处理这个请求的文件,或者url
// 这样就将请求发送过去了
// xhr.open('get', 'url')
// xhr.send()
// post方式如何发送
xhr.open('post', 'url')
// 发送post,必须要添加这个东西
xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded')
// 在发送send的时候,需要将要传递的参数写进来
xhr.send('name=狗蛋&password=123')
// 服务端返回数据给你,要使用下面的代码
// ajax在发送请求的时候,状态会改变,会触发这个事件
xhr.onreadystatechange = function () {
// 4是固定的,代表的意思是请求发送成功
if (xhr.readyState == 4) {
// 当响应也成功的时候,就可以获取数据了,去判断响应状态码 404
if (xhr.status == 200) {
// 获取响应的内容
var content = xhr.responseText
// 响应内容一般都是json格式的字符串
// 你的工作就是解析json字符串,将内容填充到html中
// 首先将json格式字符串转化为js对象
var obj = JSON.parse(content)
// var obj = eval('(' + content + ')')
}
}
}
</script>
交互
<!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>和服务端交互</title>
</head>
<body>
用户名:<input type="text" name="user" id="user">
<br>
会员等级:<input type="text" name="level" id="level">
<br>
会员余额:<input type="text" name="money" id="money">
<br>
会员年限:<input type="text" name="year" id="year">
<br>
<button id="btn">点我获取内容</button>
</body>
</html>
<script>
// 获取按钮
var obtn = document.getElementById('btn')
// 找到每一个input
var ouser = document.getElementById('user')
var olevel = document.getElementById('level')
var omoney = document.getElementById('money')
var oyear = document.getElementById('year')
// 添加点击事件
obtn.onclick = function () {
// 和服务端交互, 创建ajax对象来交互
var xhr = new XMLHttpRequest()
xhr.open('get', 'ziliao0.php')
xhr.send()
xhr.onreadystatechange = function () {
if (xhr.readyState == 4) {
if (xhr.status == 200) {
// console.log(xhr.responseText)
// 将其转化为js对象
obj = JSON.parse(xhr.responseText)
ouser.value = obj.name
olevel.value = obj.level
omoney.value = obj.money
oyear.value = obj.year
}
}
}
}
</script>
用户注册
<!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>用户注册</title>
<script src="https://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
</head>
<body>
<h1>你好,世界!</h1>
<input type="text" name="user" id="user">
<span id="usertip"></span>
</body>
</html>
<script>
$(function () {
$('#user').blur(function () {
// 通过ajax将内容传递给服务端,服务端判断之后,给你个状态,你再去对应的修改你的内容
$.ajax({
type: "POST",
url: "zhuce.php",
data: "name=" + $(this).val(),
success: function(msg){
// msg就是服务端给你的内容
var obj = JSON.parse(msg)
if (obj.state == 1) {
$('#usertip').html('√').css('backgroundColor', 'green')
} else {
$('#usertip').html('该用户已经注册').css('backgroundColor', 'red')
}
}
});
})
})
</script>