history
作用:
前进:history.go(1);(前进几步写几)
后退:history.go(-1);
刷新:history.go(0);
location
**常识**:一个url由5部分组成(协议:// 域名:端口号 文件路径? 查询字符串)
http://127.0.01:8020/bomo2/new/01-3.html
http://www.baidu.com/s?wd=178&rsv_spt=1.....
协议:http/https(请求响应模式)/ftp(传输文件)/ws(广播收听模式直播)-
网页功能的不同
主机号/域名:www.baidu.com/127.0.0.1
主机号不方便记忆所以会购买域名,而127.0.0.1只能自己访问
文件的相对路径:new/01-3.html /s-百度进行了加密
查询字符串:?wd=178&rsv_spt=1...
表单提交到服务器的东西————请求消息
**属性**
直接用console.log(location)可以查看到哪些属性
作用:获取协议、域名、端口号、文件路径、查询字符串
**跳转**
location=“新url”
location.href=“新url”
location.assign=“新url”
三个功能相同,都是跳转页面
替换后禁止后退:location.replace(“新url”)
舒心:location.reload();
navigator(保存了当前浏览器的信息)
属性:navigator.userAgent
根据字符串截取出浏览器名称&版本号
event(事件)
事件:多半用户触发或浏览器自动触发的操作
**绑定事件(3种)**
1、在HTML元素上绑定
<elem on事件名=“JS语句”></elem>
缺点:
没有实现JS和HTML的分离;无法绑定动态事件;无法同时绑定多个函数对象
2、**使用JS的事件属性绑定
elem.on事件名=function(){js语句}
优点:实现了js与HTML的分离;动态绑定事件
缺点:如法同时绑定多个对象(可以写一起)
3、使用JS的API绑定事件
主流:elem.addEventListener(“事件名”,callback)
老ie:elem.attachEvent(“事件名”,callback)
兼容:if(elem.addEventListener){
elem.addEventListener(“事件名”,callback)
}else{elem.attachEvent(“事件名”,callback)}
优点:实现了js与HTML分离;动态绑定事件;同时绑定多个函数对象
缺点:需要处理兼容性问题
**事件周期**
主流(3个)
捕获阶段:由内向外,记录着要执行的事件
目标触发:当前点击的元素优先触发
冒泡触发:由内向外的冒泡触发事件
老ie:没有捕获阶段
**获取到事件对象event**
1、获取到鼠标的位置
2、阻止冒泡
主流:e.stopPropagation();
老IE:e.cancelBubble=true;
兼容:if(e.stopPropagation){e.stopPropagation()
}else{e.cancelBubble=true;}
3、事件委托(利用冒泡)
注:建议把事件绑定在自己的父元素身上
获取目标元素:触发的元素————永远指向触发到的元素
主流:e.target
老IE:e.SRCElement;
兼容:e.SRCElement;
以后就不用this
4、组织浏览器的默认行为
如:f5的刷新、f12带来的控制台等
主流:e.preventDefault();
老IE:e.returnValue=false;
兼容:if(e.preventDefault){e.preventDefault()}else{
e.returnValue=false; }
鼠标右击:window.oncontextmenu
键盘事件:window.onkeydown
获取键盘的键码:e.keyCode
客户端存储技术
localStorage:本地级——浏览器关闭甚至电脑关闭,第二天打开依然存在
sessionStorage:会话级——浏览器一旦关闭自动死亡
作用:数据可以跨页面传输;设置皮肤、主题;浏览器的历史记录
语法:
添加:xxStorage.属性名=“值”;
获取:xxStorage.属性名
删除:xxStorage.removeItem(“属性名”)
清空:xxStorage.clear;
MYSQL
添加网页小图标
随便一张图片,改名为:faricon.ico
访问:
127.0.0.1:端口号/phymyadmin
localhost:端口号/phymyadmin
进入数据库
1.打开cmd
2.输入:cd d:/xampp/mysql/bin 再回车(在什么盘写什么)
3.登录:mysql——uroot——p 再回车
4.退出:exit
关系型数据公用的SQL语句
1、数据库
创建数据库:CRETA DATABASE IF NOT EXISTS 数据库名称 CHARACTER SET utf8
查看数据库:SHOW DATABASES;
切换数据库:USE 数据库名称
2、数据表
**数据库的数据类型:**
数值:I那天——整型
浮点型:Float/Double
精确值:DECIMAL
字符串:CHAR——长度固定
VARCHAR——长度可变的
日期:
DATE-YYY/MM/DD
DATETIME-YYY/MM/DD hh:mm:ss
TIMESTAMP——时间戳(标识:唯一不重复的)
**创建数据库表**
CRATE TABLE 表名(字段名,数据类型..);
例:
CREATE TABLE user(
id INT PRIMARY REY AUTO_INCREMENT,
name VARCHAR(30),
pwd VARCHAR(30),
email VARCHAR(30),
vip VARCHAR(30),);
主键约束:PRIMARY REY
主键自增:AUTO _INCREMENT
**数据的增删改查**
增:INSERT INTO 表名 VALUES(字段值...);
例:INSERT INTO user VALUES(0,“name”,“123123”,“ly@qq.com”)
删:DELETE FROM 表名 WHERE id=几;
例:DELETE FROM use WHERE id=3;
改:UPDATE 表名 SET 字段名=字段值,...WHERE id=几;
例:UPDATE user SET name=“重庆” WHERE id=1;
查(3种语法):
①:SELECT*FROM 表名;//获取次表所有的数据
②SELECT*FROM 表名 WHERE id=几;//获取id为几的那条数据
③SELECT 字段名 FROM 表名;//获取此表所有的对应的字段值
PHP
**如何运行PHP文件**
打开Apache,将项目放到htdocs文件夹中,打开浏览器输入端口,打开需要的文件夹
**PHP语法基础**
**输出方式**
1.echo(想要输出的内容);或echo 想要输出的内容;——只能输出4总标准类型的值
2.var_dump(想要输出的内容);
缺点:输出的太过完整,以后php只要输出在页面上的东西,都会被前端使用
ajax拿走
**变量和常量**
1、变量:只可以改变
语法:$变量名=值
使用时$号也不能省略
2、常量:值一旦创建,不可以改变
语法:const 常量名=值;
3、数据类型
四种标准/基础类型:
整型:Int 浮点型:Float/Double 布尔:Boolean
字符串:String
单引号:直接放纯文本
双引号:支持放入变量
例:echo "我的名字叫{$name}今年{$age}岁喜欢{$hobby}";
两种复合类型:
1、Array - 数组
创建:
1、直接量:$arr=[值1,....]; - 索引数组
2、内置函数:$arr=array( - hash数组。其实就是对象
"key"=>value,...)
访问:$数组名[下标/"自定义"]
遍历:循环
2、Object - 面向对象
两种特殊类型:
1、Resource - 资源类型:连接上数据库才会看到
2、Null - 释放内存
"" - 有值,值为空 null - 没有
4、运算符:字符串的拼接使用的是.
全栈:
**前端->后端:**
前端需要发起请求:
1、表单请求 提交
注意:
1、input必须添加name属性,甚至有的input/textarea/select*option还要添加value属性
2、form表单必须添加action="服务器端文件的路径"
3、method到底用get还是post,和后端沟通(安全性为主)
只负责发送,不负责保存
2、服务器端 需要接收住 前端传来的 请求消息
语法:$_GET/POST/REQUEST["input的name的值"]
REQUEST->请求:能接住一切请求不管是get还是post
**后端<->数据库**
PHP自带操作MySQL数据的API,只需要学习4句话
1、创建出连接数据库对象
$conn=mysqli_connect("hostname","username","userpwd","dbname")
例:$conn=mysqli_connect("127.0.0.1","root","","h52106")
1.5、立马为数据库传输设置中文编码
mysqli_query($conn,"SET NAMES utf8")
2、创建SQL语句:
$sql="INSERT/DELETE/UPDATE/SELECT"
3、某个数据库要执行某个操作
$rs=mysqli_query($conn,$sql)
//$rs:增删改,是一个布尔值,true->成功,false->失败
查:是一个我们都不认识的结果集:需要将不认识结果集变为我们认识的数据
mysqli_fetch_row($rs)//一次只能得到一行的数据,是一个索引数组
*mysqli_fetch_assoc($rs)//一次只能得到一行的数据,是一个hash数组
固定套路:
while(($row=mysqli_fetch_assoc($rs))!=null){
$row
4、断开和数据库的连接
mysqli_close($conn)
** 扩展:**
<input type="hidden" name="hide" value="登录" /> -
隐藏作用域,不是给用户看/输入,提交时用户后端判断执行不同代码的
ajax
同步交互和异步交互:
同步:客户端向服务器端发送请求直到服务器端进行响应的全过程,用户只能
等待 - 不严格的说法:整个页面都会刷新一下
举例:1、网址提交 2、表单提交
异步:客户端向服务器端发送请求直到服务器端进行响应的全过程,用户不
必等待 - 不严格的说法:局部页面会进行刷新
举例:ajax
**ajax:asynchronous javascript and xml:直译:异步的javascript和xml**
好处:1、不会让用户等待
2、不会刷新页面也能和服务器端进行交互(比表单强)
3、将服务器端的数据获取到前端页面
使用步骤:4步
1、创建ajax核心对象xhr
var xhr=new XMLHttpRequest();
2、创建和服务器端的连接
xhr.open("GET/POST","xx.php");
3、向服务器端发送请求消息
xhr.send()
特殊:
①GET方式,xhr.send失效,还不能省略,必须写为xhr.send(null),
请求消息需要拼接到url?后面
xhr.open("GET","xx.php?key=value&key=value...");
xhr.send(null);
恶POST方式,xhr.send可用,在之前设置请求头部
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;
消息}}
ajax就是固定的方法:难在拿到数据后要干什么