第一天
1、history对象:保存当前窗口的历史记录(打开过的url)
前进:history.go(num);
后退:history.go(-num);
刷新:history.go(0);
2、location对象:保存着当前窗口正在打开的url
常识:一个url网站由 协议://域名|主机号:端口号/文件的相对路径?查询字符串 组成
功能:
①location=“url”;
②location.href=“url”;
③location.assign(“url”);
④跳转后禁止后退:location.replace(“新url”); 不会产生历史记录
⑤刷新:location.reload();
3、even对象
(1)绑定事件
①在HTML页面上绑定事件
<elem on事件名="js语句"></elem>
②在js中使用元素的事件处理函数属性
elem.on事件名=function(){}
③使用专门的事件API绑定事件
if(elem.addEventListener){
elem.addEventListener("on事件名",callback);
}else{
elem.addattachEvent("on事件名",callback);
}
(2)周期事件
主流:3个阶段
①捕获阶段:记录着要发生的事件有哪些
②目标优先触发:目标元素->当前触发的元素发生的事件
③冒泡触发:向上触发所有记录着的事件
老IE:2个阶段,没有捕获阶段
(3)获取事件对象event:var e=event;
功能:①获取鼠标的坐标/位置
②阻止冒泡:
if(e.stopPropagation){
e.stopPropagation();
}else{
e.cancleBubble=true;
}
③利用冒泡/事件委托:如果多个子元素定义了相同或相似的操作,最好只给父元素定义一次,点击哪个,永远都是那一个,不会变化
e.srcElement;
④阻止浏览器的默认行为
if(e.preventDefault){
e.preventDefault();
}else{
e.returnValue=false;
}
⑤获取键盘的键码:e.keyCode;
拓展:客户端存储计算
localStorage:本地级,永远存在
sessionStorage:会话级,只要浏览器关闭,数据就会死亡
作用:跳转页面后,甚至关闭网页,数据仍然存在
添加:xxxStorage.属性名=值;
获取:xxxStorage.属性名
清空:xxxStorage.clear()
删除:xxxStorage.removeItem("属性名");
第二天
MySQL基本内容:访问2种
①图形化界面:
要求:同时打开MySQL和apache
访问:127.0.0.1:端口号/phpmyadmin
localhost:端口号/phpmyadmin
②命令行方式
学习数据库语句:
①数据库:
创建:CREATE DATABASE IF NOT EXISTS 数据库名称 CHARACTER SET utf8;
查看:SHOW DATABASES;
切换:USE 数据库名称;
②数据表
创建数据表:CREATE TABLE 表名(
字段名 数据类型,
........
)
③数据
增:INSERT INTO 表名 VALUES (字段值,...);
删:DELETE FROM 表名 WHERE id=几;
改:UPDATE 表名 SET 字段名=字段值,... WHERE id=几;
查:
SELECT * FROM 表名;
SELECT * FROM 表名 WHERE id=几;
SELECT 字段名,... FORM 表名 WHERE id=几;
第三天
1、如何运行php文件
打开apache,将项目放到htdocs文件中,打开浏览器输入:localhost:端口号
2、php语法基础
(1)输出方式(输出的是字符串)
echo(想要输出的内容); 或 echo 想要输出的内容;
var_dump(想要输出的内容); 可以查看数据类型和值 很详细
(2)变量和常量
①变量:值可以改变
语法:$变量名=值;
②常量:一旦创建,值不能修改
语法:const 常量名=值;
3、全栈开发
(1)前端->后端(前端需发起请求)
①表单请求、提交
注意:
a、input必须添加name属性,有的radio checkbox可能还要添加value
b、form表单必须添加action="服务器端的文件路径"
c、method用get/post,和后端沟通
②后端需要接入前端传来的请求消息(查询字符串)
语法:$_GET/POST?REQUEST["input的name值"];
(2)后端<->数据库:
①创建出连接数据库的对象:
$conn=mysqli_connect("hostname","username","userpwd","dbname");
1.5 立马为创建的数据库连接设置中文编码
mysqli_query($conn,"SET NAMES utf8");
②创建SQL语句:
$sql="INSERT/DELETE/UPDATE/SELECT";
③某个数据要执行某个SQL语句--执行操作
$rs=mysqli_query($conn,$sql);
//查:-> 得到一个不认识的结果集对象
mysqli_fetch_row(不认识的结果集);//一次只能拿到一行数据,是一个数组
mysqli_fetch_assoc(不认识的结果集);//一次只能拿到一行数据,是一个对象
mysqli_fetch_array(不认识的结果集);//一次只能拿到一行数据,即可用索引下标,也可用hash下标
固定套路:
while(($row=mysqli_fetch_xxx($rs))!=null){
var_dump($row);
}
④断开和数据库的连接
mysqli_close($conn);
拓展:多个表单提交到同一个php,但又想区分开功能,需要用到一个标签
<input type="hidden" name="自定义" value="自定义">
第四天
1、概念:
①同步交互:用户向服务器端发起请求是直到服务器进行相应的全过程,用户是不可以做其他事情的
②异步交互:用户向服务器端发起请求是直到服务器进行相应的全过程,用户是可以做其他事情的
2、ajax
不严格的定义:页面不会完整刷新,只会导致局部页面改变
3、如何使用:
(1)创建ajax的核心对象XMLHttpRequest
var xhr=new XMLHttpRequest();
(2)建立和服务器的连接
xhr.open("GET/POST","xx.php");
(3)向服务器端发送请求消息:
xhr.send();
特殊:
①GET请求:xhr.send()会失效,但还不能省略,必须写为xhr.send(null);请求消息需要放在url后面添加?key=value&key=value...
xhr.open("GET","url?key=value&key=value...");
xhr.send(null);
②POST请求:xhr.send();可用,但必须在之前加上一句话设置请求头部
xhr.open("POST","url");
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;
}
}
第五天
1、如何使用XML,其实就是一个后缀.xml的文件
①创建.xml文件
②必须写上声明标签
<?xml version="1.0" encoding="utf-8">
③必须写上一个根标签,只能写一个根标签(双标签),没有任何预定义标签,所有标签都是自定义的
④根标签内,所有自定义标签随意
前端:使用ajax去获取xml
①url写"xx.xml";
②xhr.responseXML获取响应的xml文件
③可以使用核心DOM去找需要的部分
2、JSON:js对象表示法,本身是js的一部分
(1)哪些是属于JSON字符串,后端把数据库的数据取出来整理为一个JSON字符串
'[1,2,3,4]' '{"key":value,...}' '[{},{},{}]' '{"name":[],"age":[],...}'
(2)PHP如何将数据变成json字符串
echo JSON_encode($arr);
var jsonTxt=JSON.stringify(jsonObj);
(3)前端依然使用ajax获取响应数据
xhr.responseText;
把json字符串变为json对象
eval("("+xhr.responseText+")");
JSON.parse(xhr.responseText);