前端基础之Html、CSS、JavaScript、JQuery、Ajax

前端

1.HTML

XML:可扩展标记语言
XHTML:可扩展的超文本标记语言

1. HTML 概述

HTML:超文本标记语言

网页组成:文字 + 图片 + 表格 + 表单 + 链接 + 视频 + 音频

网页文件的格式:htm ,html

网页的注释<!-- 注释的内容 -->

html 结构

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    	<title>头部标题</title>
    </head>
    <body>
    	网页内容所在位置
    </body>
</html>

2. 标记

  1. 标记的语法

    <起始标签 属性名="" ......> 被标记的内容</结束标签>
    

    注意:

    1. 不区分大小写(个别浏览器区分)
    2. 一般标记都是成对出现,极少数单独出现
    3. 标签可以相互嵌套,但不可交叉嵌套(属性如果其冲突,就近原则)
  2. 标签分类

    1. 块级标签:有换行,有宽高,外边距正常,块级标签和行级标签都可以放
    2. 行内标签:没有换行,宽高无效,上下外边距无效,只能放文字和行级标签,不能放块级标签

    如果要给服务端提交数据,表单中的组件必须有 namevalue 属性。用于给服务端获取数据方便

  3. 特殊字符

    &nbsp; 空格
    &gt; 	>
    &lt; 	<
    &quot; 	"
    &amp; 	&
    &copy; 	版权©
    &reg; 	注册®
    
  4. 标记

    1. 常用标记

      标题:<hn="1...6" align="left|center|right" ></hn>
      段落:<p align="left|center|right"></p>
      字体:<font size="1-7" color="颜色" face="字体风格[黑体]"></font>
          <i>斜体</i>		  <em>斜体</em>
          <b>加粗</b>		  <strong>加粗</strong>
          <u>下划线</u>		 <ins>下划线</ins>
          <s>删除线(贯穿线)</s><del>删除线</del>
          <sub>下标标识</sub>
          <sup>上部标识</sup>
      
      换行:<br/>
      居中:<center></center>
      元信息:<meta />
      预定义:<pre></pre>
      地址:<address></address>
      音频:<embed src=""></embed>
      水平线:<hr size="粗细" color="颜色" width="长度" align="center|left|right" noshade(3D 凹凸效果)/>
      滚动:<marquee direction="left|right|down|up" scrollamount="滚动速度"
      	behavior="scroll(重复)|slide(不重复)|alternate(来回滚动)" 
          loop="滚动次数-1" scrolldelay="两次之间的有延迟 值越大越明显的停顿"> </marquee>
      页面排版:<div> </div>
      
    2. 图片标记:img

      <img src="路径" width="长度" height="高度 px" alt="加载失败" title="标题"/>
      
    3. 链接标记:a

      1. 文本链接

        <a href="路径" target="_self|_blank(新窗口打开)" title="提示">百度</a>
        
      2. 图片链接:可做图片按钮

        <a href="链接路径" title="提示"><img src="图片路径" alt="图片加载失败" title="提示"/></a>
        
      3. 锚连接:一般用于当前页面位置的跳转

        <a name="锚名字" href="">首页</a>
        <a href="#锚名字">跳转到首页</a>
        
    4. 表格

      1. 完整版

        <table>
            <caption>标题</caption>
            <thead>
            	<tr><th></th></tr>
            <thead>
            <tbody>
            	<tr><td></td></tr>
            </tbody>
            <tfoot>
            	<tr><td></td></tr>
            </tfoot>
        </table>
        
      2. 属性

        1. table 表格

          border: 	边框粗细
          bordercolor:边框颜色
          width:		宽度
          height:		高度
          bgcolor:	背景颜色
          background:	背景图片
          cellspacing:单元格与单元格之间的距离
          cellpadding:单元格与数据之间的距离
          
        2. tr 行

          align:left|center|right 		 水平位置
          valign:middle 中|top 上|bottom 下 垂直位置
          height:
          width:
          bgcolor:
          background:背景图片
          
        3. td|th 列 (th 列属于首列,自动居中加粗)

          align:left|center|right 		 水平位置
          valign:middle 中|top 上|bottom 下 垂直位置
          height:
          width:
          bgcolor:
          background:	背景图片
          rowspan:	合并行
          colspan:	合并列
          # 合并行列:数格子,数过的格子不能再数
          
    5. 列表

      1. 有序列表

        <ol type="1|A|a|I|i" start="阿拉伯数字从哪里开始">
        	<li type="1|A|a|I|i"></li>
        </ol>
        
      2. 无序列表

        <ul type="disc(实心圆)|circle(空心圆)|square(正方形)">
        	<li></li>
        </ul>
        
      3. 自定义列表

        <dl>
            <dt> 小标题 </dt>
            <dd> 内容 </dd>
        </dl>
        
    6. 表单 form、input、select、textarea

      表单:是页面提供客户端输入信息的元素的统称,包括表单表单元素

      如果要给服务端提交数据,表单中的组件必须有 namevalue 属性,用于给服务端获取数据方便

      <form action="url 提交地址" method="get|post" name="formname">
             <fieldset>
                <legend>基本信息</legend>
          文本框:<input type="text" name="" size="" maxlength="" value="默认值"/>
          密码框:<input type="password" name="" size="" maxlength="" value="默认值"/>
          单选框:<input type="radio" name="sex" value="" checked="checked"/>提示符
          多选框:<input type="checkbox" name="" value="" checked="checked"/> 提示文字
          隐藏文本:<input type="hidden" name="" value=""/>
          上传文件:<input type="file" name=""/>
             </fieldset>
          
          下拉列表:<select name="" size="显示个数">
          			<optgroup lable="四川省">
                         <option value="成都">成都</option> 
                         <option value="南充" selected="selected">南充</option>
          			</optgroup>
                  </select>
          文本域:<textarea name="" rows="" cols="" readonly="readonly"></textarea>
          提交按钮:<input type="submit" value=""/>
          重置按钮:<input type="reset" value=""/>
          普通按钮:<input type="button" value=""/>
          图片按钮:<input type="image" src="" alt="图片加载失败"/>
          按钮图片:<button type="submit"><img src="" alt="" title="提交"/></button>
      </form>
      
  5. 页面框架

    框架一般用于写后台页面的时候用

    1. 定义框架

      <frameset rows="20%,*"> 纵向 
          <frame src="页面路径" noresize="noresize" frameborder="0" scrolling=""/>
      	<frame src="页面路径" name="right"/>
      </frameset>
      <frameset cols="30%,60%,*"> 横向 </frameset>
      <noframes>
      	<body>浏览器不支持</body>
      </noframes>
      
      left.html: <a href="right2.html" target="right">美女</a> right是右侧框架的名称
      
    2. 导入框架

      <frame src="页面路径" frameborder="0" scrolling="auto 可需|yes|no"/><iframe src="页面路径" frameborder="0" scrolling="" width="" height=""></iframe>
      

3. GETPOST

GET 请求和 POST 请求的区别:

  1. 客服端的区别

    区别GETPOST
    是否显示提交的信息都显示在地址栏中提交的信息不显示地址栏中
    封装位置将信息封装到了请求消息的请求行将信息封装到了请求体
    安全性对于敏感的数据信息不安全对于敏感信息安全
    数据体积对于大数据不行,因为地址栏存储体积有限,大小不超过4KB可以提交大体积数据
    速度相对较快相对较慢
    1. 服务端的区别(乱码处理方式

      如果提交中文到 tomcat 服务器会出现乱码,服务器默认会用 iso-8859-1 进行解码,解决方法:

      1. get 提交和 post 提交都有效

        1. 通过 iso-8859-1 进行编码,再用指定的中文码表解码即可

        2. URLDecoder.decode(user,“utf-8”)

        3. 修改 tomcat 的配置文件 server.xml:加上 URIEncoding="UTF-8"

          <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8"/>
          
      2. 对于 post 提交,还有另一种解决办法,就是直接使用服务端一个 request 对象

        request 对象的 setCharacterEncoding 方法直接设置指定的中文码表就可以将中文数据解析出来。这个方法只对请求体中的数据进行解码

        // 在获取数据之前,设置请求的字符编码集
        request.setCharacterEncoding("UTF-8");
        

和服务端交互的三种方式

位置请求方式
地址栏输入 url 地址get
超链接get
表单get 和 post

数据校验

客服端校验服务端校验
是否校验如果在客户端进行增强型校验
(只要有一个组件内容是错误,是无法继续提交的,
只有全对才可以提交)
服务端收到数据后,也还需要校验
校验目的提高用户的上网体验效果,减轻服务器端的压力为了安全性

2. CSS

CSS:层叠样式表。 HTML 定义网页的内容,CSS 定义内容的样式

CSS 的注释/* 注释内容 */

1. 样式

  1. 行内样式 style

    <p style="[属性样式] font-size:18px;background-image:url(.....);" ></p>
    
  2. 内嵌样式

    <head>
        <title></title>
        <style type="text/css">
        	选择器{属性样式}
        </style>
    </head>
    
  3. 外联样式 link

    <head>
        <title></title>
    	<link href="样式路径" rel="stylesheet" type="text/css"/>
    </head>
    

2. 选择器

优先级:id 选择器 > 类选择器 > 标签选择器

  1. id 选择器 #

    #name{ background-color:red; width:500px; }
    
  2. class 选择器 .

    .name1{ 样式属性 }
    
  3. 标签选择器

    h1{ font-size:36px;color:red;} /*页面所有的 h1 标记里的字体大小为 36px,颜色为红色*/
    
  4. 组合选择器

    h1 a li{ font-size:36px;color:red; } /*所有h1下的a下的li里的字体大小为36px,颜色为红色*/
    
  5. 通配符选择器

    *{样式属性} /* 整个页面所有的内容都具有的样式 */
    

3. 布局

  1. 漂浮 float

    Float:none|left|right      浮动
    Clear:none|left|right|both 清除浮动
    
  2. 定位 position

    定位的原则:先相对定位,再绝对定位

    position:relative; 相对定位,不脱离文档流
    position:absolute; 绝对定位,脱离文档流
    具体位置设置:top,left,right,bottom
    z-index:数值越大,越在上层
    

4. 样式属性

  1. 标签转换

    display:block;  行 转 块
    display:inline; 块 转 行
    display:none;   隐藏
    
  2. 尺寸、溢出、鼠标变手型

    width:100px;固定宽
    min-width:100px;最小宽度
    max-width:100px;最大宽度
    
    cursor:pointer;鼠标变手型
    overflow:hidden/visible/scroll/auto;隐藏/显示/始终出现滚动条/需要时才出现滚动条
    
  3. 字体/文本

    Font-style:normal/italic(斜体)
    Font-size:24px;
    Font-family:宋体/楷体
    Font-weight:bold/bolder/lighter
    Color:字体颜色
    
    Line-height:行高
    Letter-spacing:字间距
    word-spacing:词间距
    Text-decoration:none/underline/overline/line-through;无修饰/下划线/上划线/贯穿线
    Text-transform:uppercase/lowercase/capitalize; 大写/小写/首字母大写
    Text-indent:文本缩进
    Text-align:left/right/center
    
  4. 背景 transparent:透明

    Background-color:背景颜色 透明 transparent
    Background-image:背景图片
    Background-repeat:repeat|no-repeat|repeat-x|repeat-y 重复
    Background-position:背景位置
    
  5. 边框

    样式:border-style:solid;
    颜色:border-color:red;
    宽度:border-width:2px;
    简写:border:2px solid red;
    
    border-top-width:3px;
    border-top-style:dashed;
    border-top-color:#000;
    
    border-width:2px; 一值(四边) 两值(上下 左右) 三个值(上 左右 下) 四个值(上 右 下 左)
    
  6. 边距 MarginPadding

    内边距:当前标记和当前标记里的内容区域之间的距离
        Padding 两值(上下 左右) 三个值(上 左右 下) 四个值(上 右 下 左)
            Padding-top:
            Padding-left:
            Padding-right:
            Paddding-bottom: 
    外边距:当前标记与该标记之外的内容的区域之间的距离
    	Margin
    
  7. 列表

    list-style-image;
    list-style-position;
    list-style-type:disc/circle/square/decimal/none;
    list-style:none;取消列表样式
    

5. 伪类

a:link{当连接被访问之前的样式}
a:visited{当连接被访问之后的样式}
a:hover{当鼠标悬浮在连接之上时的样式}
a:active{当连接点击与释放的瞬间的样式}
a:focus{获得焦点}

3. JavaScript

1. JavaScript 概述

JavaScript 是基于对象事件驱动脚本语言,主要应用在客户端

javascript 是由上到下解析的,浏览器会按照编写的顺序执行每条语句

JS注释// 单行注释/**/ 多行注释

特点

  1. 交互性(它可以做的就是信息的动态交互)
  2. 安全性(不允许直接访问本地硬盘)
  3. 跨平台性(只要是可以解释 Js 的浏览器都可以执行,和平台无关)

JavaScript 与 Java 不同

  1. Js 是基于对象,Java 是面向对象
  2. Js 只需解释就可以执行,Java 需要先编译成字节码文件,再执行
  3. Js 是弱类型,Java 是强类型

JavaScript 可以做什么?

  1. 写入 html 输出(把 html 标签写入 html 页面)
  2. 对事件做出反应
  3. 改变 html 内容
  4. 改变 html 图像
  5. 改变 html 样式
  6. 验证输入

Js 和 HTML 相结合的方式

  1. 将 javascript 代码封装到<script>标签中

    <head>
        <title></title>
    	<script type="text/javascript">
            // js代码
        </script>
    </head>
    或放在<body><script></script></body>
    
  2. 将 javascript 代码封装到 js 文件中,并通过<script>中的 src 属性进行导入

    注意:如果<script>标签中使用 src 属性,那么该标签中封装的 javascript 代码不会被执行,
    所以通常导入 js 文件都是用单独<script>来完成。格式:

    <script type="text/javascript" src="xxx.js"></script> <!-- 早期用language,而现在使用type属性 -->
    

2. JavaScript 语法

1. 变量

变量的命名规则:

  1. 变量通常以字母开头
  2. 变量也能以$和符号开头(不推荐这么做)
  3. 变量名对大小写敏感(y 和 Y 是两个不同的变量)

变量(数据类型):Number、Boolean、String、Object、Array、Object、null、undefined

全局变量:在<script></script>标签中直接声明的变量
局部变量:在方法中声明的变量

javascript 拥有动态类型,即是相同的变量可用作不同的类型(弱数据类型),由等号右边的值来决定变量的数据类型。

例如:
var x; 				// 此时 x 是 Undefined 数据类型。
var x = 6; 			// x 是数字类型
var x = "bochy"; 	// x 是 String 类型

注意:

  1. js 中定义变量,使用 var 关键字
  2. 如果把值赋给尚未声明的变量(没用 var 声明),该变量将自动作为全局变量声明, 即使他在函数内
  3. undefined:未定义,其实它是一个常量
  4. typeof :判断具体的值的数据类型

2. 运算符

类型运算符
算术运算符+ - * / % ++ –
赋值运算符= += -= *= /= %=
比较运算符> < >= <= != == ===(全等)
逻辑运算符&&(与) ||(或) ! (非)
位运算符& (与) |(或) ^(异或) >>(右移) <<(左移) >>>(无符号右移)
三元运算符? :

3. 语句

  1. 顺序结构

  2. 判断结构:if-else

  3. 选择结构:switch

  4. 循环结构:for、while、do_while、for…in(用于数组或者对象)

    for(var 新变量 in 循环的变量){ 
        //要执行的循环语句 
    }
    
  5. 特有语句:with

  6. 异常语句:try/catch、throw

    try{
        if(条件) throw "可能出现异常的代码块的具体异常";
    }catch(e){ //处理异常的代码 }
    

4. 对象

常用对象有:String、Array、Date、Math、Number、Global、自定义对象

  1. Number 对象:javascript 只有一种数字类型,数字可以带小数点,也可以不带

    1. 定义方法

      var a1 = 12; 
      var a2 = 12.2;
      var a3 = new Number(12);
      
  2. Boolean 对象

    1. 定义方法

      var b1 = new Boolean(); // 默认为false
      var b2 = new Boolean(true); //true
      var b3 = true;
      
  3. String 对象

    1. 定义方法

      var str1 = "hello";
      var str2 = new String("hello");
      var str3 = new String();
      str3 = "hello";
      
    2. 属性(constructor、length、prototype 原型属性)

      var str = "www.bochy.COM.cn";
      var len = str.length;
      
    3. 方法(toString、valueOf)

      toUpperCase();			// 转成大写
      toLowerCase();			// 转成小写
      charAt(index);			// 下标处的字符
      indexOf("o");			// 首次出现的下标
      substr(start,length);	// 从start处截取length长度的字串
      substring(start,end);	// 截取字串 [start,end)
      split(".");         	// 分割
      valueOf(var)			// 转为字符串对象
      test("正则表达式字符串");  // 使用正则表达式进行校验
      
  4. Array 对象

    特点:1.长度是可变的 2.元素类型是任意的,建议存储同一类型的元素,操作起来比较方便

    1. 定义方法

      var arr1 = new Array(); // 相当于 Var arr = []
      arr1[0] = "a1";
      var arr2 = new Array(12,13,14,15);
      var arr3 = [12,13,14,15];
      
    2. 属性(constructor、length、prototype)

    3. 方法

      contact();	// 连接
      join();		// 加入
      pop();		// 删除最后一个
      shift();	// 删除第一个
      push();		// 添加
      splice();	// 删除并替换
      unshift();	// 插入第一个
      
  5. Object 对象

    1. 定义方法

      var per1 = {"name":"李四","age":22};
      var per2 = new Object();
      per2.name = "张三"; //设置对象的属性和值
      per2.age = 20;
      
  6. Date 对象

    var d = new Date();
    var year = d.getFullYear();		// 获取年
    var month = d.getMonth()+1;		// 获取月份
    var date = d.getDate(); 		// 获取日期
    var hour = d.getHours();		// 获取小时
    var minute = d.getMinutes(); 	// 获取分钟
    var second = d.getSeconds();	// 获取秒数
    var day = d.getDay();			// 获取星期值
    var ms = d.getMilliseconds(); 	// 获取毫秒
    
  7. Math 对象

    Math 对象不能用 new 关键字创建,如果试图这样做会给出错误。

    该对象在装载脚本引擎时,由该引擎创建。其方法和属性在脚本中总是可用

    ceil(); 	  // 返回大于等于其数字参数的最小整数。
    floor(); 	  // 返回小于等于其数值参数的最大整数。
    max();min();  // 求最大值,最小值
    random();     // 随机数, [0,1)
    
  8. Global 对象

    1. 方法

      isNaN();	// 是否非法
      
  9. 自定义对象

5. 函数

分类:一般函数、匿名函数、动态函数

函数:就是一个功能的封装体

  1. 一般函数格式

    function 函数名(参数列表){
        // 函数体:
        return 返回值; //如果没有具体的返回值,return 语句可以省略不写。
    }
    

    函数细节

    1. 只要使用函数名就是对函数的调用
    2. 函数中有一个数组arguments在对传入的参数进行存储
  2. 动态函数

    动态函数:使用 js 中的内置对象 Function,用的不是很多。参数列表,函数体都是通过字符串动态指定的

    var add = new Function("x,y","var sum; sum=x+y; return sum;"); // 参数列表,函数体
    
  3. 匿名函数

    匿名函数:没有名字的函数,函数的简写形式

    var add3 = function (a,b){return a+b;}
    

6. 事件

  1. 常用事件

    onblur="" 	// 失去焦点
    onfocus="" 	// 获取焦点
    onchange="" // 域的内容被改变
    onsubmit="" // 提交按钮事件
    onclick=""  // 单击事件
    onmousemove="" // 进入某个元素移动
    onmouseover="" // 鼠标悬停
    onmousedown="" // 鼠标按下
    onmouseup=""   // 鼠标松开
    onmouseout=""  // 鼠标移出某个元素
    
  2. 表单的属性

    类型属性
    文本readonly=“readonly” 只读
    复选框/单选框checked 是否选中
    value 属性值
    下拉列表value:获取值
    options:所有的值
    selectedIndex:返回被选择的选项的索引号,选中第一个返回 0,第二个返回 1
  3. 事件简单应用

    1. 复选框

      function func_checkbox(){
      	var myform = document.forms["myform"]; // 通过表单的name获得表单form对象
          var loves = myform.loves;	// 通过form对象获得loves属性,返回的是数组
          alter(loves.length);		// 使用弹窗,输出数组的长度
      } 
      
    2. 单选框

      function func_radio(){
      	var myform = document.forms["myform"]; // 通过表单的name获得表单form对象
          var sex_value = myform.sex.value;// 通过form对象获得被选中sex属性值,返回的是字符串
          alter(sex_value);				 // 使用弹窗,输出属性值
      } 
      

7. JS 的 DOM 操作

document 是 html 文本对象

  1. 常用 DOM 操作

    var img =document.getElementById("id 名");			// 根据 id 获取 html 节点
    var img =document.getElementsByName("属性的name值");  // 根据 name 获取 html 节点
    var img =document.getElementsByTagName("标签名");	   // 根据标签名获取 html 节点
    document.getElementById("id 名").value; 		// 获得 id 标签的值
    document.getElementById("id 名").innerHTML; 	// 将内容写入到 id 标签中
    document.write("hello"); 					 // 将 hello 写入到 html 页面
    
    img.setAttribute("属性名","属性值");// 设置某个属性的值
    img.getAttribute("属性名");		// 获取某个属性的值
    
    var p = document.createElement("p");			// 创建元素节点
    var m = document.createTextNode("段落里面的内容");	// 创建文本内容
    p.appendChild(m);								// 把文本内容放到 p 标签中
    p.removeChild(p1);								// 删除 p 的子节点
    document.body.appendChild(p);					// 将 p 标签放入文档中
    
  2. 使用 HTML DOM 来分配事件

    window.onload=function(){
        document.getElementById("username").onfocus=function(){
        	alert("请输入名字");
        }
    }
    

8. JS 的 BOM 操作

浏览器对应的对象就是 window 对象,内置对象直接使用

  1. window 对象的属性

    1. document 文档对象(每个载入浏览器的 html 文档都会成为 document 对象)

      document.write("hello"); 					 // 将 hello 写入到 html 页面
      
    2. location 地址对象(包含当前 url)

      window.location.herf = "url";
      
    3. history 历史对象(包含客户访问过的 url 信息)

      window.history.back(); // 退回到上一步
      
  2. window 对象的方法

    alert();	// 警告提示框
    confirm();	// 选择提示框
    prompt();	// 输入提示框
    onload      //加载就绪
    
    var ID = setInterval("函数名()",周期毫秒值); // 周期性
    clearInterval(setInterval()返回的ID);		// 跳出周期性函数
    setTimeout,clearTimeout
    

3. BOM

BOM(Browser Object Model): 浏览器对象模型,用于操作浏览器

浏览器对应的对象就是 window 对象,可通过查阅 dhtml api 获得

Window 对象常用方法

alert();			 // 弹窗
confirm();			 // 弹窗确认
setTimeOut();		 // 超时事件
setInterval();
clearInterval();

常用对象:

  1. Location 对象
  2. Document 对象

4. DOM

DOM(Document Object Model):文档对象模型,用来将标记型文档封装成对象,并将标记型文档中的所有的内容(标签,文本,属性等)都封装成对象

  • 封装成对象的目的:是为了更加方便操作这些文档以及文档中的所有内容。因为对象的出现就可以有属性行为可被调用
  • 常见的标记型文档:html xml

1. DOM 解析

只要是标记型文档,DOM 这种技术都可以对其进行操作

要操作标记型文档必须对其进行解析

解析方式

  1. DOM 解析方式

    标记型文档解析一棵 DOM 树,并将树中的内容都封装成节点对象

    优缺点

    1. 优点:可以对树中的节点进行任意操作,比如:增删改查
    2. 缺点:要将整个标记型文档加载进内存,意味着若标记型文档的体积很大,较为浪费内存空间
  2. SAX 解析方式

    SAX:基于事件驱动的解析

    SAX 是由一些民间组织定义的解析方式,并不是 w3c 标准,而 DOM 是 W3C 的 标准

    优缺点:获取数据的速度很快,但是不能对标记进行增删改

2. DHTML

DHTML:动态的 HTML,不是一门语言,是多项技术综合体的简称

DHTML中包含了 HTMLCSSDOMJavascript

  1. HTML:负责提供标签,对数据进行封装,目的是便于对该标签中的数据进行操作。

    简单说:用标签封装数据。

  2. CSS:负责提供样式属性,对标签中的数据进行样式的定义。

    简单说:对数据进行样式定义

  3. DOM:负责将标签型文档及文档中的所有内容进行解析,并封装成对象,在对象中定义了更多的属性和行为,便于对对象操作

    简单说:将文档和标签以及其他内容变成对象。

  4. JS:负责提供程序设计语言,对页面中的对象进行逻辑操作

    简单说:负责页面的行为定义。就是页面的动态效果。

所以 javascript 是动态效果的主力编程语言。

AJAX = DHTML + XMLhttpRequest

5. 正则表达式

常用的正则表达式:(/^是开始标记,$/是结束标记)

1. 验证邮箱: /^[_a-z0-9]+@([_a-z0-9]+\.)+[a-z0-9]{2,3}$/
2. 验证 IP 地址: /^(\d+)\.(\d+)\.(\d+)\.(\d+)$/g 注:g 只是正则选项,不属于匹配内容
3. 验证手机号码: /^[1][3][0-9]{9}$/
4. 验证带区号的电话号码: /^[0][1-9]{2,3}-[0-9]{5,10}$/
5. 验证不带区号的电话号码: /^[1-9]{1}[0-9]{5,8}$/
6. 验证是否是整数: /^[-]{0,1}[0-9]{1,}$/
7. 检查输入字符串是否是带小数的数字格式,可以是负数: /^[-]{0,1}(\d+)[\.]+(\d+)$/
8. 检查输入字符串是否只由英文字母和数字和下划线组成: /^[0-9a-zA-Z\_]+$/
9. 验证年龄: /^[0-9]{1,3}$/
10. 验证数字: /^\d*\.?\d+$/

简单应用:

function is_age(){
	var ageRegExp = /^[0-9]{1,3}$/; // 注意:不要加""
    var age = document.getElementById("age"),value; // 获取表单中的值
    if(ageRegExp.test(age)){
       document.getElementById("age_info").innerHTML = "年龄正确";
    }else{
       document.getElementById("age_info").innerHTML = "请输入1-3位的数字";
    }
}  

4. JQuery

1. JQuery 简介

JQuery 是一个 JavaScript 的函数库

JQuery 函数库包含哪些特性

  1. html 元素选取
  2. html 元素操作
  3. css 操作(获取和修改)
  4. html 事件操作(各种事件,在 JQuery 里面做了封装)
  5. html DOM 操作
  6. ajax

2. JQuery 语法

JQuery 语法是为 html 元素选取编制,可以对元素执行某些操作

基础语法$:表示 JQuery

$(selector).action(); // selector 是选择器,action 是动作

文档就绪函数

作用:为了防止文档在未完全加载之前运行 JQuery 代码

$(document).ready(function(){
	//JQuery 代码
});

简写形式:
$((function(){
	//JQuery 代码
});

JQuery 是为事件处理特别设计的函数库,当你遵循以下原则时,你写的代码会更恰当且更易于维护:

  1. 把所有的 jquery 代码置于事件处理函数
  2. 所有事件处理函数都置于文档就绪函数
  3. jquery 代码置于单独的 js 文件

3. JQuery 选择器

在 HTML DOM 中允许对 DOM 元素组或者单个节点进行操作,而在 JQuery 中有很多选择器

  1. 元素选择器

    $("p"); 		// 选择<p>元素
    $("p.intro");	// 选取所有 class="intro"的所有 p 元素
    $("p#demo");	// 选取 id="demo"的第一个 p 元素
    
  2. 属性选择器

$("[href]"); 		 // 选取所有带有 href 属性的元素
$("[href='#']"); 	 // 选取所有带有 href 属性且 href 的值等于#的元素
$("[href!='#']"); 	 // 选取所有带有 href 属性且 href 的值不等于#的元素
$("[href$='.jpg']"); // 选取所有 href 值以.jpg 结尾的元素

4. 事件/效果/CSS 函数

  1. JQuery 事件

    $(document).ready(function(){}); 		// 文档的就绪事件
    $(selector).click(function(){}); 		// 被选元素的单击事件
    $(selector).dblclick(function(){}); 	// 被选元素的双击事件
    $(selector).focus(function(){}); 		// 被选元素的获取焦点事件
    $(selector).mouseover(function(){}); 	// 被选元素的鼠标悬停事件
    
  2. JQuery 效果

    $(selector).hide(); 		// 隐藏被选元素
    $(selector).show(); 		// 显示被选元素
    $(selector).toggle(); 		// 切换(在隐藏与显示之间)被选元素
    $(selector).slideDown(); 	// 向下滑动(显示)被选元素
    $(selector).slideUp(); 		// 向上滑动(隐藏)被选元素
    $(selector).slideToggle(); 	// 切换(在隐藏与显示之间)被选元素
    $(selector).fadeIn(); 		// 淡入被选元素
    $(selector).fadeOut(); 		// 淡出被选元素
    $(selector).fadeToggle(); 	// 切换
    
  3. JQuery CSS 函数

    $(selector).css(name,value); // 为所有匹配元素的给定 css 属性设置值。
    $(selector).css(properties); // 为所有匹配元素的一系列 css 属性设置值。
    $(selector).css(name); 		 // 返回指定的 css 的值
    $(selector).width([val]); 	 // 获取/设置所有匹配元素的宽度
    $(selector).height([val]); 	 // 获取/设置所有匹配元素的高度
    

5. JQuery 的 DOM 操作

  1. 类(Class 选择器的 css 样式

    addClass(类名); 		// 向匹配的元素添加指定的类名
    removeClass(类名); 	// 删除匹配元素的类
    toggleClass(类名); 	// 没有就添加类,有就删除类
    
  2. 属性

    attr(); 				  // 设置/获取属性
    removeAttr(要删除的属性名);  // 删除匹配元素某一个属性
    
  3. 内容

    append(); 	// 向匹配的元素内部添加内容
    after(); 	// 向匹配的元素之后添加内容
    before(); 	// 向匹配的元素之前添加内容
    
  4. 其他

    remove(); 	// 删除所有匹配的元素
    html(); 	// 取得第一个匹配元素的 html 内容
    text(); 	// 取得所有匹配元素的内容.结果是由所有匹配元素包含的文本内容组合起来的文本
    val(); 		// 获取匹配元素的当前值
    empty(); 	// 删除匹配的元素集合中所有的子节点。(包括文本节点)
    

5. Ajax 异步交互

1. Ajax 概述

Ajax:不用刷新整个页面便可与服务器通讯的办法

  1. 传统 Web 与 Ajax 的差异

    差异传统 WebAjax
    发送请求方式提交表单方式发送请求异步引擎对象发送请求
    服务器响应响应内容是一个完整页面响应内容只是需要的数据
    客服端处理方式需等待服务器响应完成,并重新加载整个页面后,用户才能进行操作可以动态更新页面中的部分内容,用户可以不需等待请求的响应
  2. Ajax 执行过程

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EGnpELXS-1648561406717)(link-picture\image-20220114145756983.png)]

2. XMLHttpRequest 对象

XMLHttpRequest:Ajax 的核心对象

该对象是对 JavaScript 的一个扩展,可使网页服务器进行通信,是创建 Ajax 应用的最佳选择。实际上通常把 Ajax 当成 XMLHttpRequest 对象的代名词

XMLHttpRequest 对象

  1. XMLHttpRequest常用方法

    						   // method为GET/POST,url为相对URL或绝对URL。第3个是可选参数
    open(“method”,”url”,...); // 建立对服务器的调用
    send(content);			   // 向服务器发送请求
    setRequestHeader("label", "value");// 设置请求头的值,设置任何头部之前必须先调用 open()
    
  2. XMLHttpRequest常用属性

    1. onreadystatechange:事件处理函数

      1. 该事件处理函数ajax 框架触发,而不是用户在 Ajax 执行过程中触发,

      2. 触发后,服务器会通知客户端当前的通信状态

        这依靠更新 XMLHttpRequest 对象readyState 来实现。改变 readyState 属性是服务器对客户端连接操作的一种方式。

      3. 每次 readyState 属性的改变都会触发 onreadystatechange 事件。

    2. readyState:表示 Ajax 当前的请求状态

      它的值用数字代表:

      readyState 值含义
      0代表未初始化,还没有调用 open 方法
      1代表正在加载,open 方法已被调用,但 send 方法还没有被调用
      2代表已加载完毕,send 已被调用,请求已经开始
      3代表交互中,服务器正在发送响应
      4代表响应完成,响应发送完毕

      每次 readyState 值的改变,都会触发 onreadystatechange 事件。如果把 onreadystatechange 事件处理函数赋给一个函数,那么每次 readyState 值的改变都会引发该函数的执行。readyState 值的变化会因浏览器的不同而有所差异。但是,当请求结束的时候,每个浏览器都会把 readyState 的值统一设为 4

    3. Status状态码

      服务器发送的每一个响应也都带有头部信息。三位数的状态码是服务器发送的响应中最重要的头部信息,并且属于超文本传输协议中的一部分。常用状态码及其含义:

      状态码含义
      200一切正常(ok)
      304没有被修改(服务器返回 304 状态,表示源文件没有被修改)
      400错误请求,如语法错误
      403禁止访问(forbidden)
      404没找到页面(not found)
      500内部服务器出错(internal service error)

      XMLHttpRequest 对象中,服务器发送的状态码都保存在 status 属性里。通过把这个值和 200 或 304 比较,可以确保服务器是否已发送了一个成功的响应。

    4. statusText:返回当前请求响应状态

    5. 服务器的响应内容

      1. responseText:从服务器返回的普通文本数据
      2. responseXML:从服务器返回的是 XMLMIME 类型必须为 text/xml

      它是一个 HTMLXML普通文本,这取决于服务器发送的响应内容

      注意:

      1. 只有Ajax 的请求状态 readyState 值为 4 时, responseText/responseXML 属性才可用,表明 Ajax 请求已经结束。
      2. 只有服务器发送了带有正确头部信息的数据(Status=200)时,responseText/responseXML 属性才是可用的。

3. JavaScript 的 Ajax 异步交互

  1. 浏览器端

    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title>JavaScript 的 Ajax 请求</title>
        </head>
        <body>
            <label>用户名:</label>
            <input name="userName" id="userName" onblur="checkUserExist()"/>
            <label id="NameMsg"></label>
            
            <script type="text/javascript">
                var xmlHttpRequest; 			  // 定义 XMLHttpRequest 对象
                function createXmlHttpRequest() { // 建立 XMLHttpRequest()对象
                    if (window.ActiveXObject) {	  // 解决浏览器的兼容问题
                    	return new ActiveXObject("Microsoft.XMLHTTP");
                    } else if (window.XMLHttpRequest) {
                    	return new XMLHttpRequest();
                    }
                }
                function checkUserExist(){ //发起 ajax 请求
                    var userName = document.getElementById('userName');
                    var NameMsg = document.getElementById('NameMsg');
                    if(userName.value == null || userName.value == ''){
                        NameMsg.innerHTML = '用户名不能为空';
                        userName.focus();
                        return;
                    }else{
                    	NameMsg.innerHTML = '';
                    }					  // encodeURIComponent 是JQuery的方法
                    var param = 'userName='+ encodeURIComponent(userName.value);
                    var url = '${pageContext.request.contextPath}/servlet/UserServlet';
                    // 1.创建 xmlhttprequest 对象
                    xmlHttpRequest = createXmlHttpRequest(); 
                    // 2.设置回调函数
                    xmlHttpRequest.onreadystatechange=callback;
                    // 3.建立连接 open
                    xmlHttpRequest.open('POST', url);		   
                    // 4.设置请求头
                    xmlHttpRequest.setRequestHeader('Content-Type', 
                                               "application/x-www-form-urlencoded");
                    // 5.发送请求 send
                    xmlHttpRequest.send(param); 
                }
                //处理 ajax 请求的结果
                function callback(){ 
                    if(xmlHttpRequest.readyState == 4){ //完成
                        if(xmlHttpRequest.status == 200){ //成功
                            var result = xmlHttpRequest.responseText; //响应的返回值
                            var NameMsg = document.getElementById('NameMsg');
                            if("true" == result){ // 被占用
                            	NameMsg.innerHTML = '用户名被占用';
                            }else{
                            	NameMsg.innerHTML = '用户名可用';
                            }
                        }
                    }
                }
            </script>
        </body>
    </html>
    
  2. 服务器端

    获取浏览器端发过来的参数并作出响应

    public void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        String userName = request.getParameter("userName"); //参数是写在 uri 中的
        if(userName != null){
            //uri 默认的编码方式是 ISO8859-1
            userName = new String(userName.getBytes("ISO8859-1"),"UTF-8");
        }
        System.out.println(userName);
        response.setContentType("text/html;charset=utf-8");
        PrintWriter out = response.getWriter();
        if("jacky".equals(userName) || "张三".equals(userName)){
        	out.print("true");
        }else{
        	out.print("false");
        }
        out.flush();
        out.close();
    }
    

4. JQuery 的 Ajax 异步交互

传统方式 JavaScript 实现 Ajax 的不足

  1. 方法、属性、常用值较多,不易记忆
  2. 实现步骤繁琐
  3. 还有浏览器兼容问题

1. JQuery 的 Ajax

  1. 语法

    $.ajax([参数]);
    
  2. 常用参数

    属性名说明
    String url发送请求的地址,默认为当前页面地址
    String type请求方式:POST/POST,默认GET
    String headers请求头
    String accepts通过请求头发送给服务器,告诉服务器当前客户端可接受的数据类型
    String data或Object data发送到服务器的数据
    String contentType发送信息至服务器的内容编码类型,默认:
    application/x-www-form-urlencoded; charset=UTF-8
    String dataType将服务器端返回的数据转换成指定类型,
    包括XML、HTML、Script、JSON、JSONP、text
    Boolean async是否异步,默认为true
    Boolean global是否触发全局Ajax事件,默认为true
    Number timeout设置请求超时时间
    function beforeSend(XMLHttpRequest xhr)发送请求前的回调函数,参数可选
    function complete(XMLHttpRequest xhr,String st)请求完成后的回调函数,参数可选
    function success(Object result,String st)请求成功后的回调函数,参数可选
    function error(XMLHttpRequest xhr,String st,Exception e)请求失败时的回调函数,参数可选

    服务器端返回数据转换类型(contentType)

    转换后类型含义
    xml将服务器端返回的内容转换成 xml 格式
    text将服务器端返回的内容转换成普通文本格式
    html将服务器端返回的内容转换成普通文本格式,在插入 DOM 中时,如果包含 JavaScript 标签,则会尝试去执行
    script尝试将返回值当作 JavaScript 去执行,然后再将服务器端返回的内容转换成普通文本格式
    json将服务器端返回的内容转换成相应的 JavaScript 对象
    jsonpJSONP 格式使用 JSONP 形式调用函数时,如 “myurl?callback=?” ,jQuery 将自动替换 ? 为正确的函数名,以执行回调函数
  3. 常用方法

    $.ajax();
    $.get(); 
    $.post();
    $.getJSON();
    load();
    
    1. ajaxget、post都可以用 ajax 代替

      $.ajax(
          url:url,
          type:"get", //1.9.0之后用method
          data:data,
          dataType:"txt",
          success:function(result){},
          error:function(){}
      );
      
    2. load:加载函数 可用 get 代替

      $("#nameDiv").load(url,data);
      
      等价于
      $.get(url,data,function(result){
          $("#nameDiv").html(result);
      })
      等价于
      $.ajax(
          url:url,
          type:"get",
          data:data,
          dataType:"txt",
          success:function(result){
          	// 处理服务器返回来的数据
      	}
      );
      
    3. getJSON可用 ajax 代替

      $.getJSON(url,data,success(result){
      	// 处理服务器返回来的数据
      });
      
      等价于
      $.ajax(
          url:url,
          type:"get",
          data:data,
          dataType:"json",
          success:function(result){
          	// 处理服务器返回来的数据
      	}
      );
      

5. JSON 的 Ajax 异步交互

  1. 客服端JSON 的使用

    客服端使用 JQuery 的 getJSON() 方法发起请求

    $.getJSON(url,data,success(result){
    	// 处理服务器返回来的数据
    });
    
  2. 服务端JSON 的使用

    服务端使用 json-lib 类库,将要返回的数据转换成 JSON,或者反向转换

    json-lib: 是一个 java 类库,提供将 Java 对象(包括 bean,map,collection,array,XML等)转换成 JSON,或者反向转换的功能。

    使用 json-lib ,执行环境需要其他类库支持

    image-20220114172219382

ajax 代替`

  ~~~js
  $.ajax(
      url:url,
      type:"get", //1.9.0之后用method
      data:data,
      dataType:"txt",
      success:function(result){},
      error:function(){}
  );
  ~~~
  1. load:加载函数 可用 get 代替

    $("#nameDiv").load(url,data);
    
    等价于
    $.get(url,data,function(result){
        $("#nameDiv").html(result);
    })
    等价于
    $.ajax(
        url:url,
        type:"get",
        data:data,
        dataType:"txt",
        success:function(result){
        	// 处理服务器返回来的数据
    	}
    );
    
  2. getJSON可用 ajax 代替

    $.getJSON(url,data,success(result){
    	// 处理服务器返回来的数据
    });
    
    等价于
    $.ajax(
        url:url,
        type:"get",
        data:data,
        dataType:"json",
        success:function(result){
        	// 处理服务器返回来的数据
    	}
    );
    

5. JSON 的 Ajax 异步交互

  1. 客服端JSON 的使用

    客服端使用 JQuery 的 getJSON() 方法发起请求

    $.getJSON(url,data,success(result){
    	// 处理服务器返回来的数据
    });
    
  2. 服务端JSON 的使用

    服务端使用 json-lib 类库,将要返回的数据转换成 JSON,或者反向转换

    json-lib: 是一个 java 类库,提供将 Java 对象(包括 bean,map,collection,array,XML等)转换成 JSON,或者反向转换的功能。

    使用 json-lib ,执行环境需要其他类库支持

    image-20220114172219382
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值