JavaScript、JSON与AJAX的基础概念和用法

JavaScript、JSON、AJAX

JavaScript简单认识

JS 概述

JS(JavaScript)是一种直译式脚本语言,一种动态类型、弱类型(没有编译阶段,执行一行解释一行)、基于原型的语言。其解释器被称为 JavaScript 引擎,是浏览器的一部分,广泛应用于客户端的脚本语言,最早是在 HTML 网页上使用,目的是增加动态功能。

简单来说,JavaScript 是运行在浏览器上的脚本语言,语言的“目标程序”以普通本文形式(JSON)保存,作用是增强 HTML 页面的交互性。

JS 使用

语法:<script type=“text/javascript”> JS代码块 </script>

通过 <script> 标签在 HTML 页面中插入 JS 代码,<script type=“text/javascript”> 和 </script> 分别标记了 JavaScript 代码的开始和结束。

分号:JavaScript 也是用分号来结束一条语句,但一般情况下,分号只当一行有多条语句时才必须使用。

位置:

JS代码位置作用
head部分将脚本中的函数插入 head 部分,确保函数在被调用之前就已经加载完成
body部分body 部分的脚本将在页面加载时被执行。在页面中插入脚本,脚本将伴随页面一起加载
外部脚本调入外部脚本,将 JavaScript 写在一个外部文件中,并保存为以 .js 为扩展名的外部 JavaScript 文件,通过 src 属性调入
JS变量
  • JS 语言是弱类型语言,没有编译阶段,变量的数据类型由等于号右边的值决定,可以在脚本中改变。

    变量是存储数据的容器。

  • 语法格式:

    1. 变量声明:var 变量名;注意 JS 是区分大小写的。
    2. 变量赋值:变量名=变量值;如果没有手动赋值,那么系统默认赋值“undefined”。
  • 变量作用域:

    1. 局部变量:在函数体内声明,函数执行时开辟内存空间,函数结束时释放内存。
    2. 全局变量:在函数体外声明,页面执行时开辟内存空间,页面关闭时释放内存。全局变量耗费内存空间,所以尽量使用局部变量。

    注意:没有用 var 声明变量时,该变量无论在何处都属于全局变量。

JS 数据类型
  • 原始类型:Undefined、Number、String、Null、Boolean

    1. Undefined 类型只有一个值,就是系统默认赋值的undefined。

    2. Number 类型范围:整数、负数、整数、小数、无穷大(Infinity)、无穷小(-Infinity)、不是数字(NaN–表示结果不是一个数字)

      函数:

      函数名作用
      isNaN()判断是否为数字
      parseInt()将字符串转换成int类型
      parseFloat()将字符串转换成float类型
      Math.ceil()向上取整
    3. String创建:

      语法父类
      直接创建:str=“字符串”原始类型
      使用内置类:var str=new String(“字符串”)Object

      注意:字符串既可以用单引号也可以用双引号表示,比较两个字符串使用==,不是equals()。

      函数:

      函数名作用
      length字符串长度
      indexOf(String)获取指定字符串String在当前字符串第一次出现的索引
      lastIndexOf(String)获取指定字符串String在当前字符串最后一次出现的索引
      replace(String1,String2)使用String2替换当前字符串与String1匹配的第一个子字符串
      split(String)使用String拆分当前字符串
      subStr(startIndex,length)从startIndex开始截取长度为length的子字符串
      subString(startIndex,endIndex)截取子字符串,从startIndex开始到endIndex-1结束
      toLowerCase()所有字符转换成小写
      toUpperCase()所有字符转换成大写
    4. Null类型只有一个值:null

      注意:typeof Null类型的变量==“Object”。

      typeof 是运算符,作用是在程序运行时动态获取变量的数据类型。语法:typeof 变量名

    5. Boolean变量的值:true和false。

    6. null、NaN、undefined的数据类型不一致,分别是Object、Number、Undefined。

  • 引用类型:Object及其子类,Object类型是所有类型的超类,自定义类型默认继承Object类。

JS条件语句

if、if …else…、if…else if…else、switch,语法都跟 Java 类似 。

JS 操作符

+ 、– 、*、/、%、++、– –、==、!=、>、<、>=、<=、&&、||、!、===(检查值和类型,全吻合才算相等)

两个字符串衔接在一起使用 +。

条件运算符:variablename = (condition) ? value1: value2;

JS 循环语句

for 循环:事先知道脚本应该执行几次

for…in:通过一组元素或对象属性进行循环,循环体针对每个元素/属性执行一次

while循环、do…while…循环,语法跟 Java 类似。

break、continue,用法同 Java。

JS 函数

实现某个特定功能的可重复利用的代码(等同于 Java 的方法),可以在事件触发或者被调用时来执行,可以在页面中的任何地方调用函数,还可以用外部 .js 文件的方式让其他页面也可以调用脚本。

函数在页面的开始部分(<head>区域)定义。

如果想让浏览器在加载完页面后马上执行脚本文件,可以将脚本写入函数内。

语法:function 函数名(形参列表)

{

函数体;

}

  • 注意:JS 函数在调用时,实际参数类型和个数没有限制,JS 函数不支持重载(后者覆盖前者)。由于 JS 没有指定类型,所以在可以在函数里 return 一切。
JS 弹出框

在 JS 里可以建立三种不同的弹出框

  1. 警示框:保证让用户的到信息(内容),用户必须按OK来继续。

    语法:alert(“内容”);

  2. 确认框:用来让用户核实或接受一些信息,按OK返回真,按Cancel返回假。

    语法:confirm(“内容”);

  3. 信息框:让用户在进入页面前输入内容,用户在输入值后,按OK返回输入的值,按Cancel返回空值null。

    语法:prompt(“内容”,”defaultvalue“);

JS 事件

通过 JS 我们能够建立动态的web页面,JS 能够察觉到时间有动作。Web页面中的每个元素都能出发 JS 函数的事件。

注意:事件通常是用函数来组合使用的,并且在事件发生前,函数是不会执行的!

可以插入 HTM L标签中来定义事件动作属性

事件事件句柄(以属性的形式存在)说明
bluronblur元素失去焦点时
focusonfocus元素获得焦点时
loadonload页面或图片加载完成时
changeonchange下拉列表选中项改变或者文本框内容改变时
selectonselect文本被选择时
resetonreset重新点击鼠标按键时,表单重置
submitonsubmit点击提交按钮时,表单提交
keydownonkeydown按下键盘按键时
keyuponkeyup放开键盘按键时

JSON简单认识

  • JSON( JavaScript Object Notation)指 JavaScript 对象标记语言(表示法),是一种标准的轻量级数据交换格式的标记语言,基于JavaScript 的一个子集,采用完全独立于语言的文本格式。

  • JSON 优点:

    1. JSON 格式数据容易处理,使用 Java 或 JavaScript 读写 JSON 格式数据较为容易。
    2. JSON 格式数据占用空间小,传输速度快,跟 XML 文件相比,XML 文件占用空间大且较难解析,但是 XML 更为严谨。
    3. JSON 是纯文本,有自我描述性(人可读),具有层级结构(值中存在值)。
    4. 可以通过 JavaScript 进行解析
    5. 可以使用 Ajax 进行传输
  • JSON 语法规则

    var jsonObj={“属性名”:属性值,“属性名”:属性值,……}

    数据在名称/值对中(键值对),名称写在冒号前面(用双引号抱起来)值写在冒号后面(也用双引号引起来)。

    数据由逗号分隔,一个花括号{}保存一个对象,方括号[]保存数组,数组中可以有多个对象。

    值的类型:整数或浮点数、字符串(在” “中)、逻辑值(true、false)、数组(在[]中)、对象(在{}中)、函数、null。

    两种数据的基本结构:

    1. JSON 对象类型:JSONObject,key:value

      如:“fruit”:{“foo”:”bar”}

    2. JSON 数组类型:JSONArray,{key:value,key:value…}

      如:”grade“:[1,2,3]

    JSON 对象的属性值可以是任意类型,也被称为无类型对象。

  • 补充

    关于 eval() 函数:作用是将字符串当作一段 JS 代码解释并执行。

    使用 eval() 函数的原因:

    1. Java 程序连接数据库获取到数据后,将其拼接成 JSON 格式字符串
    2. Java 程序获得 JSON 格式字符串后,将其发送给浏览器
    3. 浏览器获得 JSON 格式字符串后,调用 eval() 函数将其当作一段 JS 代码解释并执行

Ajax简单认识

  • JavaScript 的 Ajax 功能强大,制作网站的动态效果(动画、随鼠标移动/点击而改变)就是使用 JS 制作的,它比 JSP 更加灵活简单。

    Ajax 全称 Asynchronous JavaScript And XML,译名为异步 JavaScript 和 XML,是指一种创建交互式网页应用的网页开发技术,用于创建快速动态网页。通过在后台与服务器进行少量数据交互,可以使网页实现异步更新,意味着可以在不重新加载整个页面(刷新页面)的情况下对网页的某部分进行更新。

    Ajax 是利用现有的技术,实现局部刷新的方法,并非语言。其中 JavaScript 与 XML 是核心:

    1. JavaScript:负责创建异步对象,发送请求,操作DOM,更新页面的DOM对象;
    2. XML:负责规定数据在网络传播中的格式(现在 JSON 代替了 XML!)。
  • Ajax的使用

    1. 定义Ajax:要使用Ajax必须有下列代码,直接copy,可以放在函数里:

      <script type="text/javascript">
          function 函数名()
      	{
      		if(window.XMLHttpRequest)//创建Ajax对象,直接copy
      		{// code for IE7+, Firefox, Chrome, Opera, Safari
      			xmlhttp=new XMLHttpRequest();
      		}
      		else
      		{// code for IE6, IE5 
      			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      		}
          }
      </script>
      
    2. 定义消息传递方式:open方法仅仅是定义消息传递方式,尚未把消息传递出去。

      <script type="text/javascript">
          function 函数名()
      	{
      		if(window.XMLHttpRequest)//创建Ajax对象,直接copy
      		{// code for IE7+, Firefox, Chrome, Opera, Safari
      			xmlhttp=new XMLHttpRequest();
      		}
      		else
      		{// code for IE6, IE5 
      			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      		}
          	
          	xmlhttp.open(method,url,async);//规定请求的类型、url、以及是否异步处理请求
          	//method:请求的类型,post或get
          	//url:文件在服务器上的位置,其中?表示后面要传递参数
          	//async:true异步,false同步
          	//例如:xmlhttp.open("get","demo.jsp?a=1&b=2",true);
          }
      </script>
      
    3. 设置回调函数,通过事件来触发:

      <script type="text/javascript">
          function 函数名()
      	{
      		if(window.XMLHttpRequest)//创建Ajax对象,直接copy
      		{// code for IE7+, Firefox, Chrome, Opera, Safari
      			xmlhttp=new XMLHttpRequest();
      		}
      		else
      		{// code for IE6, IE5 
      			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      		}
          	
          	xmlhttp.open(method,url,async);//规定请求的类型、url、以及是否异步处理请求
          	//method:请求的类型,post或get
          	//url:文件在服务器上的位置,其中?表示后面要传递参数
          	//async:true异步,false同步
          	//例如:xmlhttp.open("get","demo.jsp?a=1&b=2",true);
          
          	xmlhttp.onreadystatechange=function () //直接copy
          	{ 
      			if (xmlhttp.readyState==4 && xmlhttp.status==200) 
          	    { //回应本页面要执行的操作
      				
          			/**例如:
          			if(xmlhttp.responseText=="success")
      					window.location.href="success.html";
      				else
      					alert(xmlhttp.responseText);
          			*/
          	    } 
          	} 
          }
      </script>
      

      onreadystatechange 事件:当请求被发送到服务器时,需要执行一些基于相应的任务,每当 readyState 改变时,就会触发 onreadystatechange 事件,readyState 属性存有 XMLHttpRequest 的状态信息。

      XMLHttpRequest 对象的三个重要属性:

      属性描述
      onreadystatechange存储函数或函数名,每当 readyState 改变就会调用该函数
      readyState存有 XMLHttpRequest 的状态,从0到4发生变化:0—请求未初始化,1—服务器连接已建立,2—请求已接收,3—请求处理中,4—请求已完成且响应已就绪
      status200—“OK”,404—“NOT FIND”

      在 onreadystatechange 事件中,规定当服务器响应已做好被处理的准备时,开始执行任务,即当 readyState 等于4 且 status 等于200时,表示响应已经就绪。

    4. 将请求发送到服务器,通过 send 方法来实现:

      <script type="text/javascript">
          function 函数名()
      	{
      		if(window.XMLHttpRequest)//创建Ajax对象,直接copy
      		{// code for IE7+, Firefox, Chrome, Opera, Safari
      			xmlhttp=new XMLHttpRequest();
      		}
      		else
      		{// code for IE6, IE5 
      			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      		}
          	
          	xmlhttp.open(method,url,async);//规定请求的类型、url、以及是否异步处理请求
          	//method:请求的类型,post或get
          	//url:文件在服务器上的位置,其中?表示后面要传递参数
          	//async:true异步,false同步
          	//例如:xmlhttp.open("get","demo.jsp?a=1&b=2",true);
          
          	xmlhttp.onreadystatechange=function () //直接copy
          	{ 
      			if (xmlhttp.readyState==4 && xmlhttp.status==200) 
          	    { //后端get或post方法执行后,回到前端这里,将要进行的相关处理,通过responseText获取后台servlet反馈的文本
      				
          			/**例如:
          			if(xmlhttp.responseText=="success")
      					window.location.href="success.html";
      				else
      					alert(xmlhttp.responseText);
          			*/
          	    } 
          	}
          
          	xmlhttp.send();//若open中定义的方法是get,则send()形参列表为空
          
          	//若open中定义的方法是post,即需要像HTML表单那样post数据,那么需要在send方法前定义消息头,否则后端无法解析post请求
          	xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");//使用setRequestHeader()添加HTTP头
              xmlhttp.send(String);//String就是希望发送给后端servlet的JSON数据
              //例如:xmlhttp.send("sid="+sid+"&password="+password);
          }
      </script>
      
  • Ajax基本原理

    1. 服务器响应:要获取服务器的响应,需要使用 XMLHttpRequest 对象的 responseText (获取字符串形式的响应数据)或 responseXML (获取 XML 形式的响应数据)属性。
    2. Ajax异步的作用:局部刷新的核心对象是 XMLHttpRequest,异步对象存储在浏览器内存中,其创建和使用方法依赖 JavaScript 语法。

前后端分离

在 Web 开发中,我们一般想要使前后端分离,利用 AJAX 与 Servlet 接口实现前后端的数据交互,数据格式使用 JSON 格式。

  • 前端传递 JSON 格式数据给 Servlet

    使用 post 方法时,要传递的数据都写在 send 方法里。如:

    var data={"name":"Evie","age":18};
    xmlhttp.send(JSON.stringify(data));
    
  • Servlet 处理前端的请求

    通过 HttpServletRequest 类,使用 get 请求方法时,查询字符串直接编码在请求的链接 url 中,Servlet 使用 getParameter() 来获取前端的数据。

  • 后端将处理结果传递给前端

    通过以下方法,输出数据到前台的xhr.responseText

    PrintWriter out = response.getWriter();
    out.write();
    

    通过out.println()输出页面。

仅供参考,如有错误,感谢指正!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值