Ajax笔记

来源:互联网 发布:linux升级ruby版本 编辑:程序博客网 时间:2024/05/16 07:23

浏览器在后台通过发送get/post等请求,到服务器进行少量的数据交换后,返回服务器片后的数据(json);

在需要更新的节点下进行更新显示内容。

(也就是说在不重新加载整个网页的情况下,网页中的部分内容进行更新。)

1、XMLHttpRequest对象

所有的现代浏览器均支持XMLHttpRequest,(IE5/IE6:ActiveXObject);

<span style="color:#000000;">var xmlhttp;if (window.XMLHttpRequest) {    xmlhttp = new XMLHttpRequest();} else {    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}</span>

2、XMLHttpRequest的方法

xmlhttp.open(method,url,async);

    method:请求的类型;get/post

    url:文件在服务器上的位置

    async:true(异步),false(同步)

xmlhttp.send(string);

    string:仅用于post请求

xmlhttp.open("GET","test.html?time="+Math.random()+"&name=zhangsan",true);xmlhttp.send();xmlhttp.open("POST","test.html",true);xmlhttp.setRequestHeader("Content-type","text/json;charset=UTF-8");xmlhttp.send("name=zhangshan&password=123456");

xmlhttp.setRequestHeader(header,value);

    header:规定头的名称

    value:规定头的值

async = true;

xmlhttp.onreadystatechange = function(){if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {document.getElementById("divid").innerHTML=xmlhttp.responseText;}}xmlhttp.open("GET","test.html",true);xmlhttp.send();

3.XMLHttpRequest对象的responseText或responseXML属性

responseText:获得字符串形式的响应数据

responseXML:获得XML形式的响应数据

var xmltest = xmlhttp.responseXML;var texts = "";var xmltext = xmltest.getElementsByTagName("ARTIST");for (var i = 0;i<xmltext.length;i++) {texts += xmltext[i].childNodes[0].nodeValue + "<br />";}document.getElementById("divid").innerHTML = texts;

4.onreadystatechange事件

当readyState改变时,就会触发onreadystatechange事件。

readyState属性存有XMLHttpRequest对象 的状态信息。

XMLHttpRequest对象的三个重要的属性:

xmlhttp.readyState:

0:请求未初始化

1:服务器连接已建立

2:请求已接收

3:请求处理中

4:请求已完成,且响应已就绪

xmlhttp.status:

200:"ok"

404:未找到页面

5.jQueryAJAX

由于不同的浏览器对AJAX的实现并不相同,须编写额外的代码对浏览器测试

jQuery解决了这个问题

jQuery load()方法

从服务器加载数据,并把返回的数据放入被选元素中

$(selector).load(url,data,callback);

data:与请求一同发送的查询字符串键、值对集合

callback :是load()方法完成后所执行的函数名称。

callback参数:

responseTxt:包含调用成功时的结果内容

statusTXT:调用 的状态

xhr:包含XMLHttpRequest对象

test.txt文件:

<h3>jQuery and Ajax</h3><p id="pid">helloworld!</p>

把“test.txt"中的id="pid"的元素的内容,加载到指定 的<div>元素中

$("button").click(function() {$("#divid").load("test.txt #pid",function(responseTxt,statusTxt,xhr) {if(statusTxt == "success")alert("加载成功");if(statusTxt == "error")alert("error: " + xhr.status + ": " + xhr.statusText);});});

jQuery get()

$("button").click(function() {$.get("test.txt",function(data,status) {alert("data:"+data + "\nstatus:" +status);});});

Jquery post()

$("button").click(function() {$.post("test.txt",{name:"zhangsan”,password:"123456"},function(data,status) {alert("data:" +data + "\nstatus:" + status);});});

6、jQuery ajax([settings])

settings:通过$.ajaxSetup()设置任何选项的默认值

参数:

options:

类型,Object,所有选项都是可选的

async:

类型,Boolean,异步,true

beforeSend(XHR):

类型,Function,XHR唯一参数

cache:

类型,Boolean(缓存页面)

默认值,true,dataType为script和jsonp时默认false

complete(XHR,TS):

类型,Function

参数,XMLHttpRequest对象

请求成功或失败后均调用

contentType:

类型:String

默认值:“application/x-www-form-urlencoded"

发送信息至服务器时内容编码类型

context:

类型;Object

回调函数上下文

data:

类型:String

发送到服务器的数据,将自动转换为请求字符串格式

dataFilter:

类型:Function

给ajax返回的原始数据进行处理的函数

参数,data是ajax返回的原始数据,type是调用jQuery.ajax时提供的datatype参数

dataTye:

类型:String

预期服务器返回的数据类型

"xml",可用jQuery处理

”html",返回纯文本html信息

“script",返回纯文本javascript代码

"json",返回json数据

"jsonp",返回jsonp格式,”url?callback=?",jQuery将自动替换?为正确的函数名,以执行回调函数

"text",返回纯文本字符串

error:

类型,Function

自动判断(xml ,html),请求失败调用此函数

参数,XMLHttpRequest对象、错误信息、(可选)捕获的异常对象

错误信息,null,"timeout","error","notmodified","parsererror"

global:

类型,Boolean

是否触发全局ajax事件,true

ifModified:

类型,Boolean

仅在服务器数据改变时获取新数据,false

jsonp:

类型,String

在一个jsonp请求中重写回调函数的名字,替代“callback=?"

{jsonp:'onJsonPLoad'},会将"onJsonPLoad=?"传给服务器

jsonpCallback:

类型,String

为jsonp请求指定一个回调函数名

password:

类型,String

用于响应http访问请求的密码

processData:

类型,Boolean

默认,true,如果是对象,都会处理转化成一个查询字符串,以配合默认内容类型“application/x-www-form-urlencoded"

scriptCharset:

类型,String

通常只在本地和远程内容编码不同时使用

success:

类型,Function

请求成功的回调函数

参数,服务器返回,根据dataType参数进行处理后的数据

traditional:

类型,Boolean

如果想要用传统的方式来序列化数据,true

timeout:

类型,Numver

设置请求超时时间(毫秒)。

type:

类型,String

请求方式 ,默认”GET"

url:

类型,String

默认,当前页地址,发送请求的地址

username:

类型,String

用于响应HTTP访问认证请求的用户名

xhr:

类型:Function

需要返回一个XMLHttpRequest对象

示例

function lzhajax(url,data,type,callback) {$.ajax({url:url,data:data,type:type,beforeSend:function(xhr) {xhr.setRequestHeader("sessionid",ssid);},success:function(result,textStatus,jqXHR) {ssid = jqXHR.getResponseHeader("sessionid");setCookie('ssid',ssid,1);if(callback) {callback(result);}}});});
























0 0
原创粉丝点击