Ajax
Ajax 是指一种创建交互式网页应用的网页开发技术
Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。(异步请求技术)
对服务器发送请求的几种方式
整个页面
1.在浏览器网址栏输入网址
2.a标签发请求
3.location.href 也能发请求
window.open(‘http://www.baidu.com’); 跳转到某页面
window.location.href = “http://www.baidu.com”; 跳转到某页面
let url = window.location.search ; 获取浏览器地址栏?及以后的内容
表单的请求方法
action:就是请求的地址,只不过form会跳转而已
method:请求方式,有get和post
name= " 这里为请求参数 "
<form action="https://autumnfish.cn/api/joke/list" method="post">
<input type="text" name="num">
<input type="submit">
</form>
网页局部
jQuery-get方法
$.get({
url:'请求的接口地址',
data: { 参数名1: 参数值1 , 参数名2 : 参数值2 },
dataType: "json",
success:function( 响应回来的内容 ){
}
});
let url = window.location.search;
let id = url.split('=')[1];
$.get({
url:"https://autumnfish.cn/api/joke",
data: { id: id },
dataType: "json",
success:function(res){
console.log(res);
}
});
jQuery-post方法
$('#login').click(function(e){
e.preventDefault();
let userName = $('#userName').val();
let passWord = $('#passWord').val();
$.post({
url:"https://autumnfish.cn/api/user/check",
data: {
username: uaerName,
password: passWord,
},
dataType: "json",
success:function(res){
console.log(res)
}
})
})
jQuery中的ajax方法
. $ . ajax({
. type: ‘get / post’ , // 发送请求的方式
. url: ‘链接接口’ ,
. data:{参数名1:参数值1 ,参数名2:参数值2 } , //发送请求的参数
. dataType : ‘json’, // JSON 字符串来转成 JS 对象
. success : function( 响应回来的内容 ){ 请求成功后执行的代码 }
. // 响应成功后的回调函数
. })
$('#get').click( function(){
$.ajax({
type:"get",
url:"https://autumnfish.cn/api/joke/list",
success:function(res){
console.log(res);
}
})
});
json字符串
var str = {“name” : “jack” , “age” : 16 }; JS对象
var str = { name : “jack” , age : 16 }; JS对象
var str = ’ { “name” : “jack” , “age” : 16 } ’ ; JSON字符串,这个字符串代表的是一个对象
var str = ’ [ 10 , 20 , 30 , 40 , 50 ] ’ ; JSON字符串,这个字符串代表是的一个数组
JSON字符串规则:
-
单引号包裹的字符串
-
最外层必须用 { } 或者 [ ] 包起来
-
[ ] 包起来的代表数组,{ } 包起来的代表对象
-
{ } 包起来的键必须用双引号包起来 , 值如果是字符串就用双引号,数字或者布尔类型就不用双引号
json字符串转对象 或 者数组
var str = ’ { " name " : " jack " , " age " : 16 } ’ ; JSON字符串对象
var obj = JSON.parse( str ) ; 将json字符串转化为js对象
var str = ’ [ 10 , 20 , 30 , 40 , 50 ] ’ ; JSON字符串数组
var arr = JSON . parse ( str ) ; 将json字符串转化为js数组
对象 或 者数组 转 json字符串
var obj = { name : “jack” , age : 16 }; JS对象
var res = JSON . stringify ( obj ); JS对象转成JSON字符串对象
var arr = [10,20,30,40,50]; JS数组
var res = JSON.stringify ( arr ) ; JS对象转成JSON字符串数组
JSON 字符串数组
var str = '[{"name":"jack","age":16},{"name":"rose","age":17},{"name":"andy","age":18}]';
JSON 字符串对象
var str = '{"num":3, "data":[{"name":"jack","age":16},{"name":"rose","age":19},{"name":"andy","age":19}]}';
原生js发送Ajax请求
原生js发送get请求
btn1.onclick = function(){
var xhr = new XMLHttpRequest();
xhr.open('get' , 'https://autumnfish.cn/api/joke/list?num='num);
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
var obj = JSON.parse(xhr.responseText);
console.log(obj);
}
}
xhr.send();
}
原生js发送post请求
btn1.onclick = function(){
var xhr = new XMLHttpRequest();
xhr.open('post' , 'https://autumnfish.cn/api/joke/list');
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.onreadystatechange = function(){
if(xhr.readyState == 4 && xhr.status == 200){
var obj = JSON.parse(xhr.responseText);
console.log(obj);
}
}
xhr.send('参数名1=参数值1 & 参数名2 = 参数值2');
}
字符串模板
<!-- 1.导入art-template.js -->
<script src="./template-web.js"></script>
<!-- 2.准备一个模板 -->
<script type="text/html" id="tpl">
<!-- 我希望它我有几个数据,它就自动帮我们生成几个这样的html -->
<!-- 用each就代表数组有多少个就会创建几段 -->
{{ each }}
{{ $value }} ----- {{ $index }}
<hr>
{{ /each }}
</script>
<script type="text/html" id="tpl2">
{{ each }}
<h3>我的名字是:{{ $value.name }}</h3>
<p>我的年龄是:{{ $value.age }} 岁</p>
<p>我的女朋友是:{{ $value.girlFriend }}</p>
{{ /each }}
</script>
<script>
var data = [
{ name: "张三", age: 16, girlFriend: '苍老师' },
{ name: "李四", age: 17, girlFriend: '林老师' },
{ name: "王五", age: 19, girlFriend: '张老师' },
{ name: "麻子", age: 19, girlFriend: '邹老师' },
];
var res1 = template('tpl2', data);
console.log(res1);
document.body.innerHTML = res1
</script>
提交form表单的内容
$('.btn-save').click(function(e){
e.preventDefault();
var fm = new FormData($('form')[0]);
fm.append('id',id);
$.ajax({
type:'post',
url:'http://localhost:4399/hero/update',
data:fm,
contentType:false,
processData:false,
success:function(res){
console.log(res);
}
})
注意 : form表单中的name值一定要和请求的参数的名一一对应;
原生ajax封装
$.ajax = function (params) {
var xhr = new XMLHttpRequest();
if (params.type=='get' && params.data) {
params.url += "?" + params.data;
}
xhr.open( params.type, params.url);
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
params.success(xhr.responseText);
}
}
if(params.type == 'post'){
xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhr.send(params.data);
}else{
xhr.send();
}
}
发送ajax请求
$.ajax({
type:"get",
url:"https://autumnfish.cn/api/joke",
success:function(res){
alert(res);
}
})
$.ajax({
type:"post",
url:"https://autumnfish.cn/api/user/check",
data:"username=rose",
success:function(res){
alert(res);
}
})