Ajax 整理
Ajax 全称为Asychronous Javascript and XML(异步javascript 和XML) 是一种无刷新更新页面的技术
优点: 能在不刷新整个页面的前提下更新数据,这使得WEB应用程序能更为迅速地回应用户的操作。
load(方法)
load(url[, data ],[, callback]);
url :请求HTML页面的url地址
data:发送至服务器的key数据
callback:请求完成时的回调函数,无论请求成功或失败
<input type="button" id="send" value="ajax"> <div class="comment"> comment </div> <div id="resText"></div>
$(function(){ $("#send").click(function(){ $("#resText").load("text.html") }) })
如果只需要加载text.html 页面中class为para的内容,可以使用如下代码来完成
$("#resText").load("#text.html .para");
load()方法的传递方式根据参数data来自动指定,如果没有参数,则采用 GET方式
反之,有参数传递,则采用POST方式
load()方法提供了回调函数,该函数有三个参数
$("#resText").load("text.html",function(responseText,textStatus,XMLHttpRequest){ //responseText 请求返回的内容 // textStatus 请求状态:success,error notmodified timeout 四种 // XMLHttpRequest XMLHttpRequest 对象 })
注意: load()方法中 无论Ajax 请求是否成功,只要当请求完成后,回调函数就被出发。
$.get()
$.get()方法使用GET方式来进行异步请求
$get(url,[, data][, callback] [ ,type])
url : 请求的url地址
data: 发送至服务器的key/value数据会作为QueryString 附加到请求url中
callback: 载入成功时回调函数(只有response状态为success才调用)自动将请求结果和状态传递给该方法
type: 服务器返回内容的格式 XML,html,script,json,text,_default
$("#send").click(function(){ $.get("get1.php",{ username:$("#username").val(), content:$("#content").val() },回调函数) });
$.get() 方法的回调函数只有两个参数
functioin(data,textStatus){ // data: 返回的内容,可以是XML文档 json文件 HTML片段 // textStatus : 请求状态 success error notmodified timeout }
回调函数只有当数据成功返回success后才被调用 。
$("#send").click(function(){ $.get("get1.php",{ username:$("#username").val(), content:$("#content").val() },function(data,textStatus){ $("#resText").html(data); //将返回的数据添加到页面上 }) });
当返回的是XML
$("#send").click(function(){ $.get("get1.php",{ username:$("#username").val(), content:$("#content").val() },function(){ var username=$(data).find("comment").attr("username"); var content=$(data).find("comment content").text(); var txtHtml="<div class='content'><h6>"+ username+"</h6><p class='para'>" +content+"</p></div>"; $("#resText").html(txtHtml);//将返回的数据添加到页面上 }) });
XML优点: 重用性提高,可移植性是其他文件无可比拟的
缺点:文件体积相对较大,解析和操作它们的速度要慢一些.
当返回的是JSON
$("#send").click(function(){ $.get("get1.php",{ username:$("#username").val(), content:$("#content").val() },function(){ var username= data.username; var content= data.content; var txtHtml="<div class='content'><h6>"+ username+"</h6><p class='para'>" +content+"</p></div>"; $("#resText").html(txtHtml);//将返回的数据添加到页面上 },"json") });
$.post
与$.get()方法的结构和使用方法都相同
区别
GET POST
参数 参数会在url后进行传递 作为HTTP消息的实体内容发送给web服务器
大小 通常不能大于2KB 理论上不受限制
缓存 会被浏览器缓存起来,历史记录中可读取 可以避免这些问题
会带来严重的安全问题
获取方式 传递的数据在服务器端的获取不同
$.GET[] 获取 $.POST[] 获取
两者都可用 $.REQUEST[] 获取
$.ajax()
$(function(){ $("#send").click(function(){ $.ajax({ type:"GET", url:"test.json", dataType:"json", success:function(data){ $("#resText").empty(); var html=""; $.each(data,function(commentIndex,comment){ html+="<div><h6>"+comment['username']+"</h6><p class='para'>" +comment['content']+"</p></div>"; }) $("#resText").html(html); } }) }) })