Ajax、Jquery、Json简介


1.Ajax概述

Asynchronous JavaScript And XML(异步的JavaScriptXML)是几种技术的强强联合,Ajax实际上就是一种使用JavaScript控制前台所有操作,同时在后台把得到的数据用XML代码来传递给前台的一种Web程序开发模式。

②好处:(1)请求响应能够通过其他JavaScript动作来实现

(2)可以不用刷新整个页面,只刷新需要改变数据的一部分

(3)能够开发出更具有吸引力的页面效果

③一段XML代码

public String getXML(Student stu){

StringBuffer sb = new StringBuffer();

sb.append("<xml version=1.0 >");

sb.append("<student>");

sb.append("<name>"+stu.getName()+"</name>");

sb.append("<age>"+stu.getAge()+"</age>");

sb.append("</student>");

return sb.toString();

}

2.使用Ajax进行请求和普通form提交请求的区别

form提交

对象是HttpServletRequest,请求和响应的过程是同步的

<form action="sssServlet" method="post"> </form>

<a href="xxServlet?name=value" >链接</a>

Ajax请求

对象是XMLHttpRequest,请求和响应的过程是异步的

<!-- JS代码-->

xmlreq.open("method","url",true);

xmlreq.send("name=value");

③同步和异步通讯

⑴同步:指两个或两个以上随时间变化的量在变化过程中保持一定的相对关系。

如下图所示:

-------------------A

--------------------B

---------------------------------------总时间

⑵异步:在发送字符时,所发送的字符之间的时间间隔可以是任意的。当然,接收端必须时刻做好接收的准备,在时间上错开,两边都可以工作,关键是不用刻意刷新页面,等待响应。

如下图所示:

---------------------------------A(浏览器)

-------------------------------B(服务器)

3.Ajax核心处理对象

①核心处理对象是一个浏览器内置的组件,在js中可以用对象名为XMLHttpRequest来表示。最早出现在IE4里面,后来其他浏览器中也都内置了该对象。不同浏览器创建该对象的方法不一样。

IE浏览器中所有组件都叫做ActiveXObject,不同控件创建方式不一样

IE5之前var xmlreq = ActionXObject("Microsoft.XMLHTTP");

IE5之后var xmlreq = ActionXObject("Msxml2.XMLHTTP");

IE浏览器var xmlreq = new XMLHttpRequest();

③常用方法:

(1) xmlreq.abort():取消当前的HTTP请求

(2) xmlreq.open("method",true):初始化一个HTTP请求,指定请求方法(Get/Post)URL、身份验证信息等

(3) xmlreq.setRequestHeader():设置HTTP请求的头信息

(4) xmlreq.getResponseHeader():获得响应内容的HTTP头信息

(5) xmlreq.send(date):发送一个HTTP请求到服务器

④常用属性:

(1)xmlreq.onreadystatechange;指定当发生就绪状态变更事件时的处理者,通常是JavaScript函数

xmlreq.onreadystatechange=function××(){//回调函数}

(2)xmlreq.readyStateXMLHttpRequest对象专有的异步响应的状态

0表示未初始化,即XMLHttpRequest对象未创建open()方法未调用

1表示XMLHttpRequest对象被创建,但请求未发出send()未调用

2表示HTTP请求已经发出正在处理中,这时可以取得HTTP头信息,但是HTTP响应内容不可用

3表示HTTP响应内容部分数据可用,但响应还没有完成

4表示服务器响应完成,可以从属性responseBodyresponseTextresponseXML中获得完整响应内容

(3)xmlreq.status200(按照HTTP协议规定的状态值)

xmlreq.readyState=4xmlreq.status=200的区别:

例如:从服务器A发送一仓库瓷器,到浏览器B,中间可能会有很多车来进行运输,而且各个车走的路线也不同。如何保证收到的货数量正确而且没有货物破损?

xmlreq.readyState=4验证返回数据的数量是否OK

xmlreq.status=200验证返回数据完整性是否OK

(4)响应主体responseBody:以无符号字节数组描述响应内容正文

(5)响应流responseStream:以IStream(二进制数据流)形式描述响应内容正文

(6)响应文本responseText:响应内容正文的纯文本形式

(7)响应XML responseXML:以XML Dom描述响应内容正文,(常用)

4.Ajax开发的步骤

①创建XMLHttpRequest对象

②使用xmlreq.open()方法指定要连接的服务器代码和请求提交方法

③指定服务器响应完成后,如何处理服务器响应内容--回调函数

④使用xmlreq.send()提交请求

补充:服务器端操作

①得到页面请求参数

②判断或数据库查询

③通过response对象返回响应结果(与之前有区别)

5.(补充)jQuery基本语法

①使用jQuery

⑴如何引入jQuery <script type="text/javascript" src="jquery.js"></script>

⑵如何调用jQuery要想安全、无错的调用jQuery代码,必须把它们放在一个函数中

<script language=JavaScript>

$(document).ready(function(){

//在这里写jQuery代码能够被正常调用

$("div").addClass("a");

});

</script>

-------------------------------------------------------------------------------

document:DOM文档对象,只能调用DOM API中的方法

$(document):jQuery对象,能调用jQuery API中的方法,简单很多

.ready():html文档加载完毕,触发的事件,开始干活

function(){}:html加载完毕后,如何处理

$("div"):jQuery选择器,转化<div>标签为jQuery对象

.addClass("a"):给该标签添加一个class属性,<div class="a">

②核心能力----选择器

jQuery的根本在于它在页面上选择和操作某些元素的能力。

jQuery创建了自己的选择语法,非常简单。它通过HTML元素名、IDClass查找对象,返回的对象都是jQuery对象

jQuery对象不能直接调用DOM定义的方法,只能使用jQuery API中指定的方法

举例:

$(“div”).show();//按照html选择

$("p").css("background","#ff0000");//

$("#sampleText").html("Hi");//按照ID选择

$(“.redBack”).css(“background”,“#ff0000”);//按照CSS选择

jQuery可以合并搜索结果,可以在一个搜索中,将多个搜索条件合并起来。通过使用“,”分隔每个搜索条件,搜索将返回与搜索词匹配的一组结果

$(“p,span,div”).hide();//按照合并条件选择

③遍历

<ul>

<li></li>

<li></li>

<li></li>

<li></li>

<li></li>

</ul>

var aa = $("li");//得到数组

//需要对其中某些元素进行单独的设置,需要循环该数组---循环就是遍历

$("li").each(function(i){

//该每次循环取出的标签添加文字

$(this).html("列表"+i);

});

each()函数,和“for loop”的功能一样,遍历每个函数并通过迭代递增元素,循环中每个元素的引用都可以通过“this”$(this)来实现:

实现表格隔行换色效果

$("tr").each(function(i){

$(this).css({background: ["#ccc","#fff"][i%2]});

});

其他函数:

slice(start,end)//按照指定的开始结束索引截取

next()//查找后面他紧邻的同辈元素

filter(expr)//根据条件过滤

④赋值、取值

jQuery可以使用同一个函数实现给页面中某个元素赋值和取值;带参数就是赋值方法;不带参数就是取值方法。

代码如下:

$(“#msg”).html();//返回id=msg的元素节点的html内容

$(“#msg”).html(“<b>new Content</b>”); //将新内容写入id=msg的元素中

$(“#msg”).text(); //返回id=msg的元素节点的文本内容

$(“#msg”).text(“new Content”); //将文本写入id=msg的元素节点中

$(“#msg”).height();//返回id=msg的元素的高度

$(“#msg”).height(“300”); //id=msg的元素高度设为300

$(“input”).val();//返回表单的value

$(“input”).val(“test”);//将表单的value值设置为test

$(“#msg”).click() ;//触发id=msg的元素的单击事件

$(“#msg”).click([fn]) ;//id=msg的元素的单击事件添加函数

jQuery方法的返回值全部是jQuery对象,所以可以支持方法的连写,简化代码。

jQuery函数可以方便的得到或者修改任意元素的样式,从而改变页面效果

主要包括以下样式:

$("#msg").css("background"); //返回元素的背景颜色

$("#msg").css("background","#ccc") //设定元素背景为灰色

$("#msg").height(300); $("#msg").width("200"); //设定宽高

$("#msg").css({ color: "red",background: "blue" });//以名值对的形式设定样式

$("#msg").addClass("select"); //为元素增加名称为selectclass

$("#msg").removeClass("select"); //删除元素名称为selectclass

$("#msg").toggleClass("select"); //如果存在(不存在)就删除(添加)名称为selectclass

jQuery还提供了几个实用的方法,实现状态切换功能。如:

toggle()方法包括了hide()show()方法

slidetoggle()方法包括了slideDown()slideUp方法

jQuery已经把所有的DOM事件处理都进行了封装,我们可以直接通过jQuery对象获得对象并添加事件处理。

代码如下:

$("#msg").click(function(){alert("good")})//为元素添加了单击事件

$("p").click(function(i){this.style.color=['#f00','#0f0','#00f'][i]})

//为三个不同的p元素单击事件分别设定不同的处理

jQuery进行Ajax处理的方法

Ajax如果使用JavaScript完成必须要

(1)进行浏览器判断

(2)创建XMLHttpRequest对象

(3)打开与服务器的连接

(4)设置回调函数

(5)发送请求

jQuery中,把上述5个步骤,合为一体。

$.ajax({

type: "POST",

url: "some.do",

data: "name=John&location=Boston",

success: function(msg){

//回调函数,msg服务器返回的数据

alert( "Data Saved: " + msg );

}

});

6.(补充)JSON

①在Web程序中,需要从服务器返回数据,要求返回的不只有字符串、还可以返回XML等。

返回的不同格式中包含的数据量不同:

Content-Type="text/html""text/xml"

(1)String str = "标题|正文|作者";

解析字符串,适合在传递少量数据时使用

String[] sarr = str.split("|");

String title = sarr[0];

String count = sarr[1];

String author = sarr[2];

(2)服务器返回的数据

"<xml version="1.0" >

<car total="$50.">

<item name="">

<amount></amount>

</itme>

<item name="">

<amount></amount>

</itme>

<item name="">

<amount></amount>

</itme>

</car>"

在浏览器中取出数据

DOMdocument.getElementByTagName("car");

jQuery$("items").each(function(i){

$(this name).val();

});

优缺点对比:

(1)服务器返回String字符串,在浏览器中解析简单,但是数据量比较小。

(2)服务器返回xml字符串,能够包含大量数据,但是服务器端的转化代码不能通用,前台解析有固定的方法,比字符串解析要更可靠。

②程序开发中还可以选择另外一种通用数据格式:JSON

(1)既有字符串的简易性

(2)又有XML的格式化

以下即是JSON的两种结构:

[{"id":"260","name":"长沙"},{"id":"261","name":"张家界"},

{"id":"262","name":"株洲"},{"id":"263","name":"韶山"},

{"id":"264","name":"衡阳"},{"id":"265","name":"郴州"},

{"id":"267","name":"娄底"},{"id":"268","name":"耒阳"},

{"id":"269","name":"永州"},{"id":"270","name":"湘乡"},

{"id":"271","name":"湘潭"},{"id":"272","name":"常德"},

{"id":"273","name":"益阳"},{"id":"274","name":"怀化"},

{"id":"275","name":"邵阳"},{"id":"276","name":"岳阳"},

{"id":"277","name":"吉首"},{"id":"278","name":"大庸"},

{"id":"279","name":"韶山"}]

[{"id":"1","name":"中国"}]

(1)[]表示其中包含多个数据,是一个数组

(2){}表示其中的某一条数据

(3),表示数据与数据之间的分割

(4) :表示某一条数据,名称和值的关系
原文链接:http://blog.163.com/magicc_love/blog/static/18585366220129841216712/

Ajax、Jquery、Json简介的更多相关文章

  1. HTML5自定义视频播放器源码

    这篇文章主要介绍了HTML5自定义视频播放器源码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

  2. HTML5自定义mp3播放器源码

    这篇文章主要介绍了HTML5自定义mp3播放器源码,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

  3. html5自定义video标签的海报与播放按钮功能

    这篇文章主要介绍了html5自定义video标签的海报与播放按钮功能,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. CSS中实现动画效果-附案例

    这篇文章主要介绍了 CSS中实现动画效果并附上案例代码及实现效果,就是CSS动画样式处理,动画声明需要使用@keyframes name,后面的name是人为定义的动画名称,下面我们来看看文章的具体实现内容吧,需要的小伙伴可以参考一下

  6. h5页面背景图很长要有滚动条滑动效果的实现

    这篇文章主要介绍了h5页面背景图很长要有滚动条滑动效果的实现,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  7. html5借用repeating-linear-gradient实现一把刻度尺(ruler)

    这篇文章主要介绍了html5借用repeating-linear-gradient实现一把刻度尺,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  8. 如何在Canvas中添加事件的方法示例

    这篇文章主要介绍了如何在Canvas中添加事件的方法示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  9. HTML5自定义元素播放焦点图动画的实现

    这篇文章主要介绍了HTML5自定义元素播放焦点图动画的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  10. 有关HTML5页面在iPhoneX适配问题

    这篇文章主要介绍了有关HTML5页面在iPhoneX适配问题,需要的朋友可以参考下

随机推荐

  1. xe-ajax-mock 前端虚拟服务

    最新版本见Github,点击查看历史版本基于XEAjax扩展的Mock虚拟服务插件;对于前后端分离的开发模式,ajax+mock使前端不再依赖后端接口开发效率更高。CDN使用script方式安装,XEAjaxMock会定义为全局变量生产环境请使用xe-ajax-mock.min.js,更小的压缩版本,可以带来更快的速度体验。

  2. vue 使用 xe-ajax

    安装完成后自动挂载在vue实例this.$ajaxCDN安装使用script方式安装,VXEAjax会定义为全局变量生产环境请使用vxe-ajax.min.js,更小的压缩版本,可以带来更快的速度体验。cdnjs获取最新版本点击浏览已发布的所有npm包源码unpkg获取最新版本点击浏览已发布的所有npm包源码AMD安装require.js安装示例ES6Module安装通过Vue.use()来全局安装示例./Home.vue

  3. AJAX POST数据中文乱码解决

    前端使用encodeURI进行编码后台java.net.URLDecoder进行解码编解码工具

  4. Koa2框架利用CORS完成跨域ajax请求

    实现跨域ajax请求的方式有很多,其中一个是利用CORS,而这个方法关键是在服务器端进行配置。本文仅对能够完成正常跨域ajax响应的,最基本的配置进行说明。这样OPTIONS请求就能够通过了。至此为止,相当于仅仅完成了预检,还没发送真正的请求呢。

  5. form提交时,ajax上传文件并更新到&lt;input&gt;中的value字段

  6. ajax的cache作用

    filePath="+escape;},error:{alert;}});解决方案:1.加cache:false2.url加随机数正常代码:网上高人解读:cache的作用就是第一次请求完毕之后,如果再次去请求,可以直接从缓存里面读取而不是再到服务器端读取。

  7. 浅谈ajax上传文件属性contentType = false

    默认值为contentType="application/x-www-form-urlencoded".在默认情况下,内容编码类型满足大多数情况。在这里,我们主要谈谈contentType=false.在使用ajax上传文件时:在其中先封装了一个formData对象,然后使用post方法将文件传给服务器。说到这,我们发现在JQueryajax()方法中我们使contentType=false,这不是冲突了吗?这就是因为当我们在form标签中设置了enctype=“multipart/form-data”,

  8. 909422229_ajaxFileUpload上传文件

    ajaxFileUpload.js很多同名的,因为做出来一个很容易。我上github搜AjaxFileUpload出来很多类似js。ajaxFileUpload是一个异步上传文件的jQuery插件传一个不知道什么版本的上来,以后不用到处找了。语法:$.ajaxFileUploadoptions参数说明:1、url上传处理程序地址。2,fileElementId需要上传的文件域的ID,即的ID。3,secureuri是否启用安全提交,默认为false。4,dataType服务器返回的数据类型。6,error

  9. AJAX-Cache:一款好用的Ajax缓存插件

    原文链接AJAX-Cache是什么Ajax是前端开发必不可少的数据获取手段,在频繁的异步请求业务中,我们往往需要利用“缓存”提升界面响应速度,减少网络资源占用。AJAX-Cache是一款jQuery缓存插件,可以为$.ajax()方法扩展缓存功能。

  10. jsf – Ajax update/render在已渲染属性的组件上不起作用

    我试图ajax更新一个有条件渲染的组件。我可以确保#{user}实际上是可用的。这是怎么引起的,我该如何解决呢?必须始终在ajax可以重新呈现之前呈现组件。Ajax正在使用JavaScriptdocument.getElementById()来查找需要更新的组件。但是如果JSF没有将组件放在第一位,那么JavaScript找不到要更新的内容。解决方案是简单地引用总是渲染的父组件。

返回
顶部