您的位置:首页 > Web前端 > JQuery

Java Web开发(五) JavaScript库jQuery学习(3) jQuery与Ajax的应用(1)

2018-11-18 14:38 591 查看

 

关于jQuery选择器的知识这里就先不介绍了,这里向大家介绍一种比较厉害的技术,就是jQuery的Ajax应用,哈哈哈,我们当然先了解一些先进的技术啦,之后再为大家介绍jQuery选择器和其他知识。

现在让我们进入强大的jQuery的Ajax应用学习中吧。

 

一:Ajax简介

1.Ajax全称为“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。

2.该技术并不是一种单一的技术,而是一系列交互式网页应用相关的技术所形成的结合体。 

3.优点

(1)  创建快速动态网页。

(2) 通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。使Web应用程序能更为快速地回应用户的操作。

传统的网页(不使用 Ajax)如果需要更新内容,必须重载整个网页页面。

(3) 不需要任何插件支持,就能被绝大多数主流浏览器所支持,只需允许JavaScript在浏览器上执行即可。

(4) 与传统模式相比,Ajax模式在性能上的最大区别就在于传输数据的方式。在传统模式中,数据提交是通过表单来实现的,而数据获取是靠全页面刷新来重新获取整页的内容;Ajax模式只是通过XMLHttpRequest对象向服务器端提交希望提交的数据,按需发送。

(5) Ajax的工作原理相当于在用户和服务器之间加了一个中间层,使用户操作与服务器响应异步化。它在客户端创建Ajax引擎,把传统模式下的一些服务器的工作转到客户端,既便于客户端资源管理,又减轻服务器和带宽的负担。

4.缺点

就算看起来很完美的Ajax也并不是一项完美的技术。Ajax主要有以下几点不足:

(1) 浏览器对XMLHttpRequest对象的支持度不足

为了使Ajax应用能在各个浏览器中正常运行,我们必须花费大量的精力编码兼顾各个浏览器之间的差别,来让Ajax应用能够很好地兼容各个浏览器。这使得Ajax开发的难度比普通的Web开发高出很多。

(2) 破坏浏览器前进,"后退"按钮的正常功能

在Ajax中"前进"和"后退"按钮功能都会失效,大多数程序员宁可放弃前进,后退功能,也不愿意在繁琐的逻辑中去处理问题。然而,对于用户来说,他们会经常想后退取消操作,就会使得通过Ajax交互得到的内容消失掉。

(3) 对搜索引擎的支持的不足

由于是动态网页技术,通常浏览器通过爬虫程序来对互联网上的数据进行搜索整理,然而爬虫程序现在还不能理解那些奇怪的JavaScript代码和引起的页面内容的变化,推广起来会更难。

(4) 开发和调试工具的缺失

这一点相信大家都能理解。

4.Ajax的XMLHttpRequest对象

XMLHttpRequest对象可以在不向服务器提交整个页面的情况下,实现局部更新网页。当页面全部加载完毕后,客户端通过该对象向服务器请求数据,服务器端接受数据并处理后,向客户端反馈数据。 而且,它可以同步或异步返回 Web 服务器的响应,并且能以文本或者一个 DOM 文档形式返回内容。

这个对象是Ajax实现的关键:发送异步请求,接收响应及执行回调都是通过它来完成的。虽然浏览器对它的实现方式有所区别,但是大多数浏览器都提供了类似的属性和方法,编写方法的区别也不大,实现得到的效果也基本相同。

 

 

二:jQuery中的Ajax

由于XMLHttpRequest对象的很多属性和方法,对于想要快速入门Ajax的人来说是很困难的,然而,jQuery中提供了一些快捷操作,使得jQuery开发Ajax变得容易,这样,我们就不必理会那些繁琐的XMLHttpRequest对象,就能把大部分程序开发集中在业务和用户体验上,既减轻了我们的负担,又能给用户更好的体验。下面介绍jQuery中的Ajax。

 

jQuery对Ajax操作进行了封装,在jQuery中$.ajax()方法属于最底层的方法,而第二层是load(),$.get()和$.post()方法,第三层是$.getScript()和$.getJSON()方法。下面先介绍第二层的方法。

1.load()方法

(1)结构:load(url[,data][,callback])

(2)作用:载入远程HTML代码并插入DOM中。

(3)参数解释:

名称 类型 说明
url String 请求的HTML页面的URL地址
data Object 发送至服务器的key/value数据
callback Function 请求完成时的回调函数,无论请求成功或失败

load()方法完成了原本很繁琐的工作。开发人员只需要使用jQuery选择器为HTML片段指定目标位置,然后将要加载的文件的URL作为参数传递给load()方法即可,如果你在主界面用CSS添加了样式,就会应用到新加载的页面上。

参数详解:

url:请求的HTML页面的地址,如果只需要一部分元素,可以通过为URL参数指定选择符。

        语法结构为:"url selector",这里要注意的是,URL和选择器之间有一个空格。

data:如果该参数没有,则采取GET方式传递;反之,则会自动转换为POST方式。

          该参数是一个键值对集合。

callback:该参数是为在加载完成后才继续执行的操作而设定的。该参数实际上是一个回调函数。

          写法为:function(responseText,textStatus,XMLHttpRequest){}

          该参数函数也有三个参数:

                                    

response 请求返回的内容
textStatus 请求状态success,error,notmodfied,timeout
XMLHttpRequest XMLHttpRequest对象

         注:无论Ajax请求是否成功,只要当请求完成后,回调函数就被触发。

 

 

上面的load()方法通常用来从Web服务器上获取静态的数据文件。但如果需要传递一些参数给服务器中的页面,可以使用$.get()或者$.post()方法或者$.ajax()方法。$.get()和$.post()方法是jQuery中的全局函数,对jQuery对象进行操作。

2.$.get()方法

(1)方式:该方法使用GET方式进行异步请求

(2)结构:$.get(url[,data][,callback][,type])

(3)参数解释:

          

参数名称 类型 说明
url String 请求的HTML页的URL地址
data Object 发送至服务器的key/value数据会作为QueryString附加到请求URL中
callback Function 载入成功时回调函数(只有当Response的返回状态是success才调用该方法)自动将请求结果和状态传给该方法
type String 服务端返回内容的格式,包括xml,html,script,json,text和_default

(4)实例

我们先创建一个评论页面的HTML代码:

[code]<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>信息网页</title>
<script src = "https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<!-- <script src = "myjQuery.js"></script> -->
<script>
$(document).ready(function(){

});
</script>
</head>
<body>
<form id="forml" action="#">
<p> 请填写 </p>
<p> 姓名   <input type="text" name="name" id="name"/></p>
<p> 内容   <textarea name="content" id="content" rows="5" cols="20"></textarea></p>
<p> <input type="button" id="sendButton" value="发送" /></p>
</form>
<div class="this"> 结果为: </div>
<div id="getText"> </div>
</body>

效果如下:

这里我们先把HTML分为两个文件:

a:我们首先要确定请求页面的URL地址,但是我们提交时会出现错误:

原因很简单,浏览器(Webkit内核)的安全策略决定了file协议访问的应用无法使用

XMLHttpRequest
对象。

跨域请求仅支持协议:http, data, chrome, chrome-extension, https, chrome-extension-resource

在某些浏览器中是允许这种操作的,比如Firefox浏览器,也就是说Filefox支持file协议下的AJAX请求。我们这里就用火狐浏览器来进行操作。

b:然后我们获取我们想要得到的数据后,就可以通过回调函数将返回的数据显示在页面上,

这里$.get()的回调函数又两个参数:

   function(data,textStatus){

}

data 请求返回的内容,可以是XML文档,JSON文件,HTML片段
textStatus 请求的状态,有success,error,notmodified,timeout

注:回调函数只有当数据成功返回后才被调用。

(5)type参数数据格式

服务器返回的数据格式可以有多种。下面是几种常见的返回格式:
a:HTML片段

由于返回的是HTML片段,因此并不需要经过处理就可以经返回的数据插入到主页面中。

代码示例:

[code]$(document).ready(function(){
$("#sendButton").click(function(){
$.get("myTest.html",
{
name : $("#name").val(),
content : $("#content").val()
},function(data,textStatus){
$("#getText").html(data);
},
"html");
});
});

优点:使用方便。

缺点:但这种固定的数据结构并不一定能在其他的Web应用程序中广泛使用。

b:XML文档

由于服务器返回数据格式的是XML文档,因此需要对返回的数据进行处理,处理XML文档与处理HTML文档一样,可以使用常规的attr(),find(),filter()以及其他方法。

代码示例:

[code]$(document).ready(function(){
$("#sendButton").click(function(){
$.get("myTest.html",
{
name : $("#name").val(),
content : $("#content").val()
},function(data,textStatus){
//$("#getText").html(data);
var name = $(data).find("this").attr("name");
var content = $(data).find("this content").text();
var txtHtml = "<div class='this'><h6>"+name+":</h6><p class='sa'>"+content+"</p></div>"
$("#getText").html(txtHtml);
});
});
});

这里要注意的是服务端必须为XML格式。

优点:可移植性比较强以这种数据格式提供的数据的重用性将极大提高。

缺点:实现比较复杂,XML体积相对较大,解析和操作它们的速度要慢些。

c:JSON文件

JSON集合了HTTP和XML的优点,即简洁,容易阅读,也可以方便的被重用。

由于服务端返回的数据格式师JSON文件,因此也需要对返回的数据进行处理。

代码示例:

[code]$(document).ready(function(){
$("#sendButton").click(function(){
$.get("myTest.html",
{
name : $("#name").val(),
content : $("#content").val()
},function(data,textStatus){
var name = data.name;
var content = data.content;
var txtHtml = "<div class='this'><h6>"+name+":</h6><p class='sa'>"+content+"</p></div>"
$("#getText").html(txtHtml);
},"JSON");
});
});

上面的代码中,把返回格式设置为"JSON"来指定返回的数据格式。

具体用到哪个格式要具体问题具体考虑。

3.$.post()方法

该方法与$.get()方法的的结构和使用方式都相同,不过它们之间仍有以下区别:

(1)GET请求会将发送的数据作为QueryString附加到请求URL中,而POST请求则是通过HTTP消息的实体内容发送给Web服务器。这种区别对用户是不可见的。

(2)GET方式对传输的数据有大小限制(通常不能大于2KB),而使用POST方式传递的数据量要比GET方式大得多。

(3)GET方式请求的数据会被浏览器缓存起来,会带来严重的安全问题,而POST方式相对来说就可以避免这些问题。

(4)GET方式和POST方式传递的数据在服务端的获取也不相同。在不同的方式下,获取方法也不同。

(5)前面讲到,$.load()方法在加入data参数时,是以POST方式发送请求,因此可以用该方法来完成同样的功能。

 

上面介绍了jQuery对Ajax操作的第二层的$.load(),$.get()和$.post()方法,之后会介绍可以实现第二层所有功能的$.ajax()方法和可以加载json文件的第三层$.getScript()方法和$.getJson()方法。

 

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: