bom和server基础知识

129 阅读5分钟

BOM常用对象:window ,scree,history,location,navgator,event

history:保存当前窗口的历史记录(历史url);

作用: 前进:history.go(1); 后退:history.go(-1); 刷新:history.go(0); 2.location:保存当前窗口的正在打开的url 常识:一个url由5个部分组成 1.协议:http/https。 2.主机号/域名:www.baidu.com 3.端口号:8020-默认端口号 4.文件的相对路径 5.查询字符串 ?wd=178&rsv-spt=1 3 API:跳转 location=“新的url” location="新url" location.assign("新url") 替换后禁止后退:location.replace("新的url") 刷新:location.reload(); navigator:保存了当前浏览器的信息(浏览器的名称和版本号) 属性:navigator.userAgent; 根据字符串截取出浏览器的名称和版本号 4.event:事件对象 事件:多半用户触发或者浏览器自动触发的操作 1.绑定事件:3种 1.在HTML上绑定事件 <elem.on事件名=“js语句”> 缺点: 1.没有实现js于HTML的分离 要HTML/css/js分离开来 2.无法动态绑定事件,一次只能绑定一个元素 3.无法同时绑定多个函数对象 2.在js上绑定事件: elem.on事件名=function(){js语句} 优点:1.实现js与html的分离 2.动态绑定事件 使用js的api绑定事件: 主流:elem.addEventListener("事件名",callback); 老IE:elem.attachEvent("on事件名",callback); 兼容:if(elem.addEventListener){ elem.addEventListenrt("事件名",callback);

}else{ elem.attachEvent("on事件名",callback);

} 优点:1.实现了js和html的分离 2.动态绑定事件 3.同时绑定了多个函数对象 缺点:需要处理兼容性的问题

事件周期: 1.捕获阶段:由内向外,记录着要执行的事件 2.目标阶段:当前点击的元素优先出发 3.冒泡阶段:由内向外的冒泡触发事件 老Ie没有捕获阶段 3.获取事件对象event: 主流:事件函数中传入一个形参e,就可以自动接住事件对象event 老ie:window.event; 兼容:event:不光老ie可用,主流浏览器可用 获取了事件对象event就可以做很多很多的操作 1.获取鼠标的位置 2.阻止冒泡:在开发中不会阻止冒泡,更需要利用冒泡 主流:e.stopPropagation(); 老IE:e.cancelBubble=true; 兼容:if(e.stopPropagation){ e.stopPropagation();

}else{ e.cancelBubble=true; } 事件委托(利用冒泡) 为什么:优化,没绑定一个事件,就相当于就创建一个事件监听对象,创建的对象越多,网页的性能越低下 建议:建议把事件绑定都绑定在自己的父元素身上一次即可 获取目标元素:触发的元素-永远不变就是你触发的元素 当前元素:this->指向多个元素 主流e.target ; 老IE e.srcELement; 兼容:e.srcElement;不光老IE可用,主流浏览器页可以使用 阻止浏览器的默认行为: 哪些:比如:F5带来的刷新,F12带来的控制台,右键带来的菜单框,F11全屏,a自带跳转,submit自带提交... 主流:e.preventDefault(); 老IE:e.returnValue=false; 兼容:if(e.preventDefault){ e.preventDefault() }else{ e.returnValue=false; }

		新事件:
	1、鼠标右击:window.oncontextmenu
	 2、键盘事件:window.onkeydown

	 5、*获取键盘的键码
		e.keyCode;//不需要记忆,直接输出查看 或 百度 keyCode表

查询数据库的语句: 1.数据库: 1.创建数据库: create database if no exists 数据库名称 character set utf8; 2.查看数据库:show databases; 3.切换数据库;use 数据库名称; 2.数据表: 数据库的数据类型: 数值:int-整型 Float/Double-浮点型 DECIMAL-精确值 字符串: char -长度固定的 varchar-长度可变的 2.创建数据表:create table 表名(字段名 数据类型); 数据库语句: 增:insert into 表名 valueS(字段值) 举例:INSERT INTO USER VALUES(0,"NAME","密码"); 改:updata 表名 set 字段名=字段值 where id=“几”; 删:delete from 表名 where id ="几"; 查询:select * from 表名;//获取表中所有的数据; select * from 表名 where id="几" select 字段名,from 表名;

PHP语法基础: 1.输出的方式: 1.echo(想要输出的内容);或echo 想要输出的内容;-只能输出4种标准类型 2.var-dump(想要输出的内容)//输出数据类型和值 缺点: 1.输出太过完整,以后PHp只要输在在页面上的东西都会被前端ajax拿走 2.复合类型只能用var-dump输出;

变量和常量: 1.变量:值可以改变 语法:$变量名=值; 注意使用时也不能省略 2.常量:值一旦创建,不可以改变 语法:const 常量名=值; 3.数据类型: 四种标准/基础类型: 整型:int 浮点型:Float/Double 字符串:String-不太一样 单引号:直接放纯文本 双引号:支持放入变量

两种复合类型: 1.Array-数组 创建: 1.直接量:arr=[1....]2.内置函数:arr=[值1....] 2.内置函数:arr=array(hash数组。其实就是对象 “key”=>value;) 访问数组:数组名[下标/自定义]2.对象:2、服务器端需要接收住前端传来的请求消息语法:数组名[下标/自定义] 2.对象: 2、服务器端 需要接收住 前端传来的 请求消息 语法:_GET/POST/REQUEST["input的name的值"];

REQUEST->请求:能接住一切请求不管是get还是post

后端->数据库:PHP自带操作mysql数据的API 1.创建出链接数据库的对象 $conn=mysqli_connect("hostname","username","userpwd","dbname");

2.为数据库设置中文编码: mysqli_query(conn,"SETNAMESutf8");3.创建SQL语句:conn,"SET NAMES utf8"); 3.创建SQL语句: sql="INSET/DELETE/SEECT/UPDATA" 4.数据库要执行某个操作; rs=mysqliquery(rs=mysqli_query(conn,sql);sql); rs其实时一个布尔值; 查:是一个我们不认识的结果集:解决将不认识的结果集变成我们认识的数据 mysqli_fetch_row(rs)//一次只能得到一行的数据,是一个索引数组;mysqlifetchassoc(rs)//一次只能得到一行的数据,是一个索引数组; mysqli_fetch_assoc(rs)//一次只能拿到一行的数据,是一个hash数组 解决的固定套路: while((row=mysqlifetchassoc(row=mysqli_fetch_assoc(rs))!=null){ $row//当前行数据

    }

5.断开与数据库的连接: mysqli-close($conn); - 隐藏作用域,不是给用户看/输入,提交时用户后端判断执行不同代码的

1、创建ajax核心对象xhr var xhr=new XMLHttpRequest();

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

3、向服务器端发送请求消息
   xhr.send()

	特殊:
	  1、GET方式,xhr.send失效,还不能省略,必须写为xhr.send(null),请求消息需要拼接到url?后面
		xhr.open("GET","xx.php?key=value&key=value...");
		xhr.send(null);

	  2、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就是固定的方法:难就难在你拿到数据后要干什么