笔记

43 阅读4分钟

ajax

1、概念:

同步交互:客户端向服务器端发送请求,直到服务器端进行响应的全过程,用户是不能做其他事情的(等)
典型:网址请求、表单请求 - 都是属于同步交互

异步交互:客户端向服务器端发送请求,直到服务器端进行响应的全过程,用户是可以做其他事情的(不等)
典型:ajax请求

2、ajax:asynchronous javascript and xml:直译:异步的javascript和xml

不严格的定义:页面不会完全的刷新,只会导致局部页面发生改变
其实我们很早之前就已经见过一个异步技术了:
1、定时器 - 定时器里面的内容再耗时也不会卡主后续代码 - 做特效
2、ajax - 目的:在不刷新页面的情况下也可以和服务器端进行交互沟通,【可以将服务器端的数据放到前端】

3、如何使用:4个固定步骤

1、创建ajax的核心对象XMLHttpRequest - 简称XHR对象
var xhr=new XMLHttpRequest();

2、建立和服务器端的连接
xhr.open("GET/POST","xx.php");

3、向服务器发送请求
xhr.send("key=value&key=value&...");
特殊:
1、如果是GET请求,send方法会失效,但是还不能省略不写,必须写为xhr.send(null),请求消息放到url?后面
xhr.open("GET","xx.php?key=value&...");
xhr.send(null);

2、如果是POST请求,send方法可用,但是需要在之前设置请求头部
xhr.open("POST","xx.php");
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.send("key=value&...");

4、设置状态事件监听
xhr.onreadystatechange=()=>{
if(xhr.readyState==4&&xhr.status==200){
xhr.responseText;//response:响应。接收到服务器的响应:php放在页面上的一切东西 - 难在拿到东西你要干什么
}
}

1、XML数据格式:

1、面试题:HTML、XHTML、DHTML、XML分别是什么?
HTML - 网页
XHTML - 更严格的网页
DHTML - 动态的网页,不是新技术,也不是新概念,只是现有技术的整合
(HTML+CSS+JS(dom)),导致我们的网页在离线时也具有动态特效
XML - 配置文件|数据格式 - 已经被淘汰了:x - 未知,ml - markup language 标记语言,未知的标记语言
它没有提供过任何预定义标签,所有的标签由你自定义,不在乎漂不漂亮

2、如何使用:
1、创建一个xx.xml文件
2、写入文档声明

version - 版本号:目前只有1.0和1.1,但是1.1升级的拉胯,所以没人使用,而且学完过后以后不需要再次学习,因为它再也不会更新了
encoding - 设置中文编码
必须出现在第一个行第一列
3、在下方写入一个根标签,注意必须是一个双标签:只有双标签才可以包裹住其他内容,而且只能有一个
4、里面其余标签你随意

其实当初后端会把数据库的数据取出来,整理为XML数据格式

✳前端开发人员:
1、依然使用ajax去获取
2、url写为"xx.xml";
3、不要使用xhr.responseText; 使用xhr.responseXML;可以当做DOM来处理

2、✳✳✳✳✳JSON数据格式:javascript object notation:js对象表示法,本身就是js的一部分,只不过独立出来,各大主流语言都支持的一种轻量级【文本】数据

作用:类似于XML,都是一个数据格式,更简洁、更快、更容易解析

1、认识了哪些叫做JSON数据(JSON字符串):

1、'[1,2,3,4,5]'
2、'{"name":"代老湿","age":18}'
3、'[{},{},{},{}]'
4、'{"names":[],"ages":[],"salaies":[]}'

以上四种写法都是JSON字符串

2、PHP如何穿衣服:echo JSON_encode($arr); - 数据转为了JSON字符串

Node.js的语法和javascript几乎相同:如何穿衣服:JSON.stringify(arr);

3、前端依然使用ajax获取数据,xhr.responseText得到服务器端响应的的数据,如何脱衣服:

1、eval("("+jsonTxt+")");
✳2、JSON.parse(jsonTxt);

3、HTML+CSS+JS+PHP+MYSQL - 后台管理系统

客户端存储技术:
1、查询字符串:缺点:只适合双页面传输,多页面不方便,解析复杂
2、cookie:缺点:大小有限制2kb,保存解析非常麻烦,用户可以禁用cookie!
3、✳✳✳✳✳webStorage:几乎没有缺点:html5带来的新概念,老IE不支持。优点:大小有限制8mb,使用极其简单

分为两大类:
1、localStorage - 本地级:永久存在的
2、sessionStorage - 会话级:浏览器一旦关闭,数据就会死亡

保存:xxxStorage.属性名=值;
读取:xxxStorage.属性名
删除:xxxStorage.removeItem("属性名");
清空:xxxStorage.clear();

5、如何使用jQuery:

1、固定步骤:

1、在HTML页面引入jquery-1.11.3.js文件
2、✳使用jQuery提供的选择器去获取元素
3、✳使用jQuery提供的API去操作元素

2、jQuery提供了一个工厂函数(很重要,可以干很多操作):

语法:✳$() 或者 jQuery()
作用:
1、查找元素:$("jQuery选择器") - 一切的css选择器都可以使用,但是jQuery提供了更多的选择器:jQuery的作者非常喜欢css选择器
注意:
1、千万不要记忆,习惯使用帮助文档:
www.w3school.com.cn/jquery/jque…
2、封装js的底层代码:document.querySelectorAll(); 提供了更加丰富的选择器
3、✳✳✳✳✳返回:不再使用DOM集合,而是一个JQ对象:

2、转换
问题:jQuery和DOM对象都只能使用自己提供的操作,不能用别人的方法
解决:
1、jQuery -> DOM
语法:$("jQuery选择器")[下标] - 绝对没用,不会把简单的变成复杂的

*2、DOM -> jQuery
语法:$(dom对象) - 真有用,this/e.target -> 自动是一个DOM对象,用不了jQuery的操作

3、jQuery的特性:

1、链式操作 - 找到一个元素后可以不断地连续的.操作它
2、隐式迭代 - 悄悄的自动的循环,不用/千万不要去循环他,千万不要加下标

4、*通过关系获取元素:前提:先找一个元素

父:("xx").parent();<br>子:("xx").parent();<br> 子:("xx").children();
前一个兄弟:("xx").prev();<br>后一个兄弟:("xx").prev();<br> 后一个兄弟:("xx").next();
*除了自己的其他兄弟:$("xx").siblings();

5、✳操作元素

内容 - html/text/val - 完全等效于以前的innerHTML/innerText/value
语法:获取:("xx").api()<br>设置:("xx").api()<br> 设置:("xx").api("新内容")

属性 - attr - 完全等效于以前的getAttribute/setAttribute
语法:获取:("xx").attr("属性名")<br>设置:("xx").attr("属性名")<br> 设置:("xx").attr("属性名","属性值")
删除:$("xx").removeAttr("属性名")

jQuery专门为class提供了一系列操作:
追加class:("xx").addClass("新的class");<br>删除class("xx").addClass("新的class");<br> 删除class:("xx").removeClass();
- 如果不传入参数,清空所有class
- 如果传入参数,删除指定的class
切换class:$("xx").toggleClass("新的class");
- 在有此class和没有此class之间进行切换

样式 - css - 无敌的,不关系你的内联还是样式表,他只关心当前生效的样式是什么
获取:("xx").css("css属性名")<br>设置:("xx").css("css属性名")<br> 设置:("xx").css({ - 设置一定设置的是内联样式,优先级最高
"css属性名":"css属性值",
...
})

6、✳创建元素&渲染页面&删除元素&克隆元素

工厂函数的第三个作用:
1、创建元素
var 新元素=(<开始标签class=>(`<开始标签 class=''>{变量}</结束标签>`)

2、渲染页面:4种
向里插入,当儿子
("父元素").append(新元素);最后一个儿子<br>("父元素").append(新元素); - 最后一个儿子<br> ("父元素").prepend(新元素); - 第一个儿子

向外插入,当兄弟
("兄弟").before(新元素);前一个兄弟<br>("兄弟").before(新元素); - 前一个兄弟<br> ("兄弟").after(新元素); - 后一个兄弟

3、删除元素:$("xx").remove();

4、克隆元素:垃圾
$("xx").clone(true);//添加原来xx的js的功能

总结:工厂函数:
1、找元素:$("选择器")
2、DOM->JQ:$(dom元素)
3、创建元素:$("标签")