JS旅程小结5

213 阅读6分钟

history

作用:
    前进:history.go1);(前进几步写几)
    后退:history.go-1);
    刷新:history.go0);

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 VALUES0,“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、将服务器端的数据获取到前端页面
使用步骤:41、创建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;//php放在页面上的东西 - 服务器端响应的
                    消息}}   
ajax就是固定的方法:难在拿到数据后要干什么