jquery学习(三)-ajax

来自锋利的jquery第二版

1、Ajax的优势和不足

1.优势

A.不需要插件支持:不需要任何浏览器插件,且大多数主流浏览器支持;

B.优秀的用户体验:实现局部刷新,使得web应用能够迅速的回应用户操作;

C.提高web程序性能:在传统模式中数据交换时通过from表达实现,而数据获取靠的是全页面刷新来获取正页内容,效率非常低。而Ajax模式通过XMLHttpRequest对象向服务器提交希望提交的数据,实现按需发送和加载。

D.减轻服务器和带宽负担:Ajax工作原理相当与早用户和服务器之间加了一个中间层,使得用户操作与服务器响应异步化。它在客户端创建ajax引擎,把传统方式下的一些服务负担工作转移到客户端,使用客户端资源来处理,减轻服务器和宽带的负担。

2.不足

A.浏览器对XMLHttpRequest对象支持不足;

B.破坏浏览器的前进和后退按钮的功能;

C.对搜索引擎支持不足;

D.开发和调试工具缺乏

2、Ajax的XMLHttpRequest(为方便书写以后XMLHttpRequest简写为XHR)

1.属性和方法

(1)readyState属性

readyState属性标识了当前XHR对象所处的状态,通过该属性的访问,来判断此次的状态然后做出相应的操作。


0


未初始状态;此时已经创建了XHR对象,但是还未初始化


1


准备发送状态;此时,已经调用XHR对象的open方法,并且XHR对象已经准备将一个请求发送到服务器


2


已发送状态;此时,通过send方法把一个请求发送到服务器,但是会没有接收到响应


3


正在接收状态;此时,已经接收到http头部信息,但是消息体还没有完全接收到


4


完成响应状态;此时,已经完成XHR响应接收

(2)responseText的属性

responseText属性包含客户端接收到的HTTP响应文本内容。当readyState属性值为0、1或2时,responseText属性包含一个字符串;当readyState属性为3(正在接收)时,响应中包含客户端还未完成的响应信息;当readyState属性为4(已加载)时,该readyText才包含完整的响应信息。

(3)responseXML属性

responseXML属性用来描述被XHR对象解析后的XML文档属性。也就是说,只有当属性值为会4,并且响应头部的Content-Type的MIME类型被指定为XML(text/xml或者application/xml)时,该属性才会 值并且解析为一个XML文档。

(4)Status属性

该属性表示HTTP请求的状态代码。仅当readyState>=3时才能访问,否则会报异常。状态代码代码状态如下表:

转自:http://hibeary.iteye.com/blog/697997


100


初始的请求已经接受,客户应当继续发送请求的其余部分。(HTTP 1.1新)


101


OK  服务器将遵从客户的请求转换到另外一种协议(HTTP 1.1新)


200


一切正常,对GET和POST请求的应答文档跟在后面。


201


Created 服务器已经创建了文档,Location头给出了它的URL


202


Accepted  已经接受请求,但处理尚未完成


203


Non-Authoritative Information 文档已经正常地返回,但一些应答头可能不正确,因为使用的是文档的拷贝,非权威性信息(HTTP 1.1新)。


204


No Content 没有新文档,浏览器应该继续显示原来的文档。如果用户定期地刷新页面,而Servlet可以确定用户文档足够新,这个状态代码是很有用的。


205


Reset Content 没有新的内容,但浏览器应该重置它所显示的内容。用来强制浏览器清除表单输入内容(HTTP 1.1新)。


206


Partial Content 客户发送了一个带有Range头的GET请求,服务器完成了它(HTTP 1.1新)。


301


Moved Permanently 客户请求的文档在其他地方,新的URL在Location头中给出,浏览器应该自动地访问新的URL。


302


Found 类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。注意,在HTTP1.0中对应的状态信息是“Moved Temporatily”。出现该状态代码时,浏览器能够自动访问新的URL,因此它是一个很有用的状态代码。注意这个状态代码有时候可以和301替换使用。例如,如果浏览器错误地请求 http://host/~user (缺少了后面的斜杠),有的服务器返回301,有的则返回302。严格地说,我们只能假定只有当原来的请求是GET时浏览器才会自动重定向。


304


Not Modified 客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。


305


Use Proxy 客户请求的文档应该通过Location头所指明的代理服务器提取(HTTP 1.1新)。


400


400 - Bad Request 请求出现语法错误。


401


Unauthorized 访问被拒绝,客户试图未经授权访问受密码保护的页面。


403


Forbidden 请求不允许(由于服务器上文件或目录的权限设置导致资源不可用)


404


Not Found  没有发现文件、查询或URl(没有找到指定的资源)


500


Internal Server Error 服务器产生内部错误


501


Not Found  没有发现文件、查询或URl(没有找到指定的资源)


502


Bad Gateway 服务器暂时不可用,有时是为了防止发生系统过载


503


Service Unavailable 服务器过载或暂停维修


504


Gateway Timeout 关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长


505


HTTP Version Not Supported服务器不支持或拒绝支请求头中指定的HTTP版本

(5)statusText属性

statusText属性描述了HTTP状态代码文本,readyState>=3是才可用,否则异常。

(6)onreadystatechange事件

每当readyState值发生改变时,就会触发onreadystatechange事件。一般用于触发回调处理函数。

(7)open方法

XHR对象通过调用open(method, url, async, username, passwrod)方法来进行初始化工作。


method


必填,http方法,例如:POST、GET、PUT及PROPFIND。大小写不敏感。


url


必填,请求的URL地址,可以为绝对地址也可以为相对地址。


async


可选,布尔型,指定此请求是否为异步方式,默认为true。如果为真,当状态改变时会调用onreadystatechange属性指定的回调函数。


username


可选,如果服务器需要验证,此处指定用户名,如果未指定,当服务器需要验证时,会弹出验证窗口。


passwrod


可选,验证信息中的密码部分,如果用户名为空,则此值将被忽略。

(8)send方法

一般情况下,使用Ajax提交的参数多是些简单的字符串,可以直接使用GET方法将要提交的参数写到open方法的url参数中,此时send方法的参数为null。

例如 :
                    var url = "login.jsp?user=XXX&pwd=XXX";
                    xmlHttpRequest.open("GET",url,true);
                    xmlHttpRequset.send(null);

此外,也可以使用send方法传递参数。使用send方法传递参数使用的是POST方法,需要设定Content-Type头信息,模拟HTTP POST方法发送一个表单,这样服务器才会知道如何处理上传的内容。参数的提交格式和GET方法中url的写法一样。设置头信息前必须先调用open方法。

例如:
                   xmlHttpRequest.open("POST","login.jsp",true);
                   xmlHttpRequest.setRequestHeder("Content-Type","application/x-www-form-urlencoded;charset=UTF-8");
                   xmlHttpRequest.send("user="+username+"&pwd="+password);

(9)abort 方法

该方法可以可以暂停一个HttpRequest的请求发送或者HttpResponse的介绍,并且将XHR对象设置为初始状态。

(10)setRequestHeader方法

该方法用于设置请求头部信息。当readyState属性值为1时,可以在调用open方法后调用这个方法;否则会报异常。setRequestHeader(header,value)方法包含两个参数:前一个是header键名称,后一个是键值。

(11)getResponseHeader方式

此方法用于检索响应的头部值,仅当readyState>=3时才可以调用这个方法;否则, 返回空字符串。此处通过getResponseHeader方法获取所有的XHR的头部信息。

2.Ajax实例,代码如下:

var xhr=null;

If(window.ActiveXObject){  //IE5、IE6是以ActiveXObject

//引入XMLHttpRequest对象的

xhr=new ActiveXObject(“Microsoft.XMLHTTP”);

}else if(window.XMLHttpRequest){ //除IE5、IE6外的浏览器

//XMLHttpRequest是window的子对象

xhr=new XMLHttpRequest();    //实例化一个XMLHttpRequest对象

}

xhr.open(“GET”,”test.php”,true) //调用open方法(采用get方式、异步方法)

xhr.onreadystatechange=requestCallBack;  //设置回调函数

xhr.send(null);  //因为get方法提交,所以可以使用null作为参数调用

function requestCallBack(){    //一旦readyState值改变时就会调用该函数

if(xhr.readyState==4){    //完成响应状态,已经完成HttpResponse响应接收

if(xhr.status==200){  //请求成功

//responseText返回的信息

//将xhr.responseText的值赋予id为resText的元素

Document.getElementById(“resText”).innerHtml=xhr.responseText

}

}

}

3、jQuery中的Ajax

1.load方法

Load(url [,data] [,callback] )


url


string


请求HTML页面的url地址


Date(可选)


Object


发送到服务器的key/value数据


Callback(可选)


Function


请求完成时的回调函数,无论请求成功或失败

2.$.get和$.post方法

$.get(url [,data] [,callback] [,type])

$.post(url [,data] [,callback] [,type])


url


string


请求HTML页面的url地址


Date(可选)


Object


发送到服务器的key/value数据


Callback(可选)


Function


载入成功是回调函数(只有当response的返回状态是success才调用该方法)自动将请求的结果和状态传递给该方法


Type (可选)


String


服务器返回内容格式,包括xml、html、scrip、json和_default

3.$.getScript方法和$.getJson方法

$.getScript(url,callback)

$.getScript(getJson,callback)

4.$.ajax方法


url


要求为String类型的参数,(默认为当前页地址)发送请求的地址。


type


要求为String类型的参数,请求方式(post或get)默认为get。注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持。


timeout


要求为Number类型的参数,设置请求超时时间(毫秒)。此设置将覆盖$.ajaxSetup()方法的全局设置。


async


要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为false。注意,同步请求将锁住浏览器,用户其他操作必须等待请求完成才可以执行


cache


要求为Boolean类型的参数,默认为true(当dataType为script时,默认为false)。设置为false将不会从浏览器缓存中加载请求信息.


data


要求为Object或String类型的参数,发送到服务器的数据。如果已经不是字符串,将自动转换为字符串格式。get请求中将附加在url后。防止这种自动转换,可以查看processData选项。对象必须为key/value格式,例如{foo1:"bar1",foo2:"bar2"}转换为&foo1=bar1&foo2=bar2。如果是数组,JQuery将自动为不同值对应同一个名称。例如{foo:["bar1","bar2"]}转换为&foo=bar1&foo=bar2。


dataType


要求为String类型的参数,预期服务器返回的数据类型。如果不指定,JQuery将自动根据http包mime信息返回responseXML或responseText,并作为回调函数参数传递。

可用的类型如下:

xml:返回XML文档,可用JQuery处理。

html:返回纯文本HTML信息;包含的script标签会在插入DOM时执行。

script:返回纯文本JavaScript代码。不会自动缓存结果。除非设置了cache参数。注意在远程请求时(不在同一个域下),所有post请求都将转为get请求。

json:返回JSON数据。

jsonp:JSONP格式。使用SONP形式调用函数时,例如myurl?callback=?,JQuery将自动替换后一个“?”为正确的函数名,以执行回调函数。

text:返回纯文本字符串。


beforeSend


要求为Function类型的参数,请求完成后调用的回调函数(请求成功或失败时均调用)。参数:XMLHttpRequest对象和一个描述成功请求类型的字符串。

function(XMLHttpRequest, textStatus){

this;//调用本次ajax请求时传递的options参数

}


success


要求为Function类型的参数,请求成功后调用的回调函数,有两个参数。

(1)由服务器返回,并根据dataType参数进行处理后的数据。

(2)描述状态的字符串。

function(data, textStatus){

//data可能是xmlDoc、jsonObj、html、text等等

this;  //调用本次ajax请求时传递的options参数

}


error


要求为Function类型的参数,请求失败时被调用的函数。该函数有3个参数,即XMLHttpRequest对象、错 误信息、捕获的错误对象(可选)。

ajax事件函数如下:

function(XMLHttpRequest, textStatus, errorThrown){

//通常情况下textStatus和errorThrown只有其中一个包含信息

This;//调用本次ajax请求时传递的options参数

}


contentType


要求为String类型的参数,当发送信息至服务器时,内容编码类型默认为"application/x-www-form-urlencoded"。该默认值适合大多数应用场合。


global


要求为Boolean类型的参数,默认为true。表示是否触发全局ajax事件。设置为false将不会触发全局ajax事件,ajaxStart或ajaxStop可用于控制各种ajax事件。


ifModified


要求为Boolean类型的参数,默认为false。仅在服务器数据改变时获取新数据。

服务器数据改变判断的依据是Last-Modified头信息。默认值是false,即忽略头信息。


jsonp


要求为String类型的参数,在一个jsonp请求中重写回调函数的名字。该值用来替代在"callback=?"这种GET或POST请求中URL参数里的"callback"部分,例如

{jsonp:‘onJsonPLoad‘}会导致将"onJsonPLoad=?"传给服务器。

时间: 2024-12-19 10:55:33

jquery学习(三)-ajax的相关文章

jquery学习之AJAX

1,关于AJAX的简单介绍 AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML). AJAX 不是新的编程语言,而是一种使用现有标准的新方法. AJAX 是与server交换数据并更新部分网页的艺术,在不又一次载入整个页面的情况下. 2,什么是 AJAX ? AJAX = 异步 JavaScript 和 XML. AJAX 是一种用于创建高速动态网页的技术. 通过在后台与server进行少量数据交换,AJAX 能够使网页实现异步

20151210 Jquery 学习笔记 AJAX 进阶

一.加载请求 在 Ajax 异步发送请求时,遇到网速较慢的情况,就会出现请求时间较长的问题.而超 过一定时间的请求,用户就会变得不再耐烦而关闭页面.而如果在请求期间能给用户一些提 示,比如:正在努力加载中...,那么相同的请求时间会让用户体验更加的好一些. jQuery 提供了两个全局事件,.ajaxStart()和.ajaxStop().这两个全局事件,只要用户触发 了 Ajax,请求开始时(未完成其他请求)激活.ajaxStart(),请求结束时(所有请求都结束了) 激活.ajaxStop(

20151205 jquery 学习笔记--Ajax

Ajax全称为:“Asynchronous JavaScript and XML”(异步 JavaScript 和 XML), 它并不是 JavaScript 的一种单一技术,而是利用了一系列交互式网页应用相关的技术所形 成的结合体.使用 Ajax,我们可以无刷新状态更新页面,并且实现异步提交,提升了用户 体验. 一.Ajax 概述 Ajax 这个概念是由 JesseJamesGarrett 在 2005 年发明的.它本身不是单一技术,是一串 技术的集合,主要有: 1.JavaScript,通过

jquery学习笔记-----ajax

$(selector).load( url [,date] [,callback] ) url:请求页面的url地址 date:发送至服务器的key:value数据 callback:请求完成时的回调函数,无论请求成功或失败,即只要XMLHttpRequest对象的状态为4或complete时就调用 此函数会将ajax返回的内容作为innerHTML插入到selector里面如果需要可以在url后面添加参数来筛选要插入的内容 如果有date参数则按照POST方式发送,否则按照GET方式发送.da

jquery[学习心得]ajax的注意点

ajax异步请求 优点: 1.不需要插件,只要支持javascript 2.用户体检极佳(局部刷新) 3.提升web程序的性能 4.减轻web服务器带宽的负担 缺点 1.不同版本的浏览器对xmlhttpRequest支持度不高 2.前进.后退的功能被破坏 3.搜索 引擎的支持度不高 4.开发调试工具缺乏 .load()方法是局部方法,适合做静态文件的异步获取 $.get()和$.post()是全局方法,适合传参到服务器 get方式有三种方式 1.通过?   ?url=ycku 2.'url=yc

JQuery学习之Ajax应用

1.AJAX=异步javaScript和XML:在不重载整个网页的情况下,AJAX通过后台加载数据,并在网页上进行显示 2.load():简单但强大的AJAX方法,load()方法从服务器加载数据,并把返回的数据放入被选元中: 语法:$(selector).load(URL,data,callback); **必需的URL参数规定所希望加载的URL **可选的data参数规定与请求一同发送的查询字符串键/值对集合 **可选的callback参数是load()方法完成后执行的函数名称 $("#di

JQuery学习三(隐式迭代和节点遍历)

在JQuery中根据id获取控件,如果输入id错误是不报错的. 必要时可以通过写判断语句进行判断是否id写错 1 <!DOCTYPE html> 2 <html xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <title>JQuery</title> 5 <style type="text/css"> 6 .warning { 7 backgr

jQuery学习(三)

事件 on方法可以将一个事件绑定在jQuery对象上,当你的操作触发了这些事件时,便会调用你所绑定的函数. 例如,给某个超链接绑定点击事件. 1 <head> 2 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 3 <script src="./js/jquery-1.12.0.js"></script> 4 &

jQuery从零开始(三)-----ajax

jq当中的ajax技术 $.ajax $.get() $.post() $.load() $.ajax({ url:'请求文件的地址', type:'请求文件使用的方法', data:'向请求的api发送的数据',(不需要可以不写)例:'name=zhangsan&pwd=123' async:true, //是否开启异步,默认值为true表示开启异步 datatype:预期的服务器返回的数据类型, sucess: (data)=> {     回调函数    console.log(dat

struts2框架学习三 ajax

ajax jsp部分代码 $(function() { $.ajax({ type:'POST', url:'list1Action.action', success:function(data){ if(data.length>0){ var tr=''; $.each(data,function(index){ tr+='<tr><td>'+data[index].id+'</td><td>'+data[index].name+'</td&g