Query对Ajax操作进行了封装,在jQuery中$.ajax()方法属于最底层的方法,
第2层是load(),$.get()和$.post()方法 第三层是$.getScript()和$.getJSON()
方法。首先介绍第二层的方法
载入html文档
load()方法是jquery中最为简单和常用的Ajax方法 能载入远程的HTML代码并
插入DOM中 结构为:
load(url [,data] [,callback])
参数说明:
url 类型String 请求HTML页面的URL地址
data(可选) 类型OBJECT 发送至服务器的Key/value数据
callback(可选) 类型function 请求完成时的回调函数,无论请求成功或失败
- <input type="button" id="send" value="Ajax获取" />
- <div class="comment">已有评论:</div>
- <div id="resText"></div>
- $(function(){
- $("#send").click(function(){
- $("#resText").load("test.html");
- });
- });
test.html页面里并没有添加样式,但现在家族的内容有样式了,这些样式
是在主页添加的,即住页面相应的样式会理解应用到新加载的内容上。
load()方法的url参数的语法结构是:“url selector”注意,url和选择器之间有一个空格
如果只需要加载test.html页面中的class为"para"的内容,可以使用如下代码完成
$("#resText").load("test.html .para");
load()方法的传递方式根据参数data来自动指定。如果没有参数传递
则采用get方式传递;反之,则会自动转换为post方式。
//无参数传递,则是get方式
$("#resTest").load("test.php",function(){
//...
});
//有参数的传递,则是post方式
$("#resTest").load("test.php",{name:"rain",age:"22"},function(){
//...
})
回调参数
对于必须在加载完成后才能继续的操作,load()方法提供了回调函数(callback),该函数
有三个参数,分别代表请求返还的内容,请求状态和XMLHttpRequest对象。jQuery代码如下
$("#resText").load("test.html",function(responseText,testStatus,XMLHttpRequest){
//responseText:请求返回的内容
//textStatus:请求状态:success,error,notmodified,timeout 4种
//XMLHttpRequest:XMLHttpRequest对象
});
在load()方法中,无论Ajax请求是否成功,只要当请求完成(complete)后,回调函数(callback)就
被触发,对应下面将介绍的$.ajax()方法中的complete回调函数
$.get()方法和$.post()方法
$.get(url [,data] [,callback] [,type])
$.get()方法参数解释
url String 请求的HTML页的URL地址
data Object 发送至服务器的key/value数据会作为QueryString附加到请求URL中
callback Function 载入成功时回调函数(只有当Response的返回状态是success才调用
该方法)自动将请求结果和状态传递给该方法
type String 服务器端返回内容的格式 包括xml html script json text default
$.get()方法的回调函数只有两个参数
function(data,textStatus){
//data :返回的内容 可以是xml文档,json文件,html片段等等
//textStatus:请求状态:success,error,notmodified,timeout四种
}
例子:html片段
- $(function(){
- $("#send").click(function(){
- $.get("get1.php",{
- username:$("#username").val(),
- content:$("#content").val()
- },function(data,textStatus){
- $("#resText").html(data);//将返回的数据添加到页面上
- });
- })
- });
- xml文档
- $(function(){
- $("#send").click(function(){
- $.get("get2.php",{
- username:$("#username").val(),
- content:$("#content").val()
- },function(data,textStatus){
- var username=$(data).find("comment").attr("username");
- var content=$(data).find("comment content").text();
- var txtHtml="<div class='comment'><h6>"+username+":</h6><p class='para'>"+content+"</p></div>";
- $("#resText").html(textHtml);//将返回的数据添加到页面上
- });
- })
- });
- JSON文件
- $(function(){
- $("#send").click(function(){
- $.get("get3.php",{
- username:$("#username").val(),
- content:$("#content").val()
- },function(data,textStatus){
- var username=data.username;
- var content=data.content;
- var txtHtml="<div class='comment'><h6>"+username+
- ":</h6><p class='para'>"+content+"</p></div>";
- $("#resText").html(txtHtml);//将返回的数据添加到页面上
- },"json");
- });
- });
在上面的代码中 将$.get()方法的第4个参数(type)设置为"json"来代表期待服务端返回
的数据格式。
$.POST()方法
$(function(){
$("#send").click(function(){
$.post("post1.php",{
username:$("#username").val(),
content:$("#content").val()
},function)
});
})
$.ajax()方法是jQuery最底层的Ajax实现
它的结构为:
$.ajax(options)
该方法只有一个参数。但在这个对象里包含了$.ajax()方法所需要的请求设置以及
回调函数等信息。参数以key/value的形式存在 所以参数都是可选的。
前面用到的$.load(),$.get(),$.post(),$.getScript()和$.getJSON()这些方法 都是
基于$.ajax()方法构建的。$.ajax()方法是jQuery最底层的Ajax实现,因此可以替代前
面的所有方法。
不过这里需要纠正的一点是:
jQuery get() 和 post() 方法用于通过 HTTP GET 或 POST 请求从服务器请求数据。
HTTP 请求:GET vs. POST
两种在客户端和服务器端进行请求-响应的常用方法是:GET 和 POST。
- GET - 从指定的资源请求数据
- POST - 向指定的资源提交要处理的数据
GET 基本上用于从服务器获得(取回)数据。注释:GET 方法可能返回缓存数据。
POST 也可用于从服务器获取数据。不过,POST 方法不会缓存数据,并且常用于连同请求一起发送数据。
如需学习更多有关 GET 和 POST 以及两方法差异的知识,请阅读我们的 HTTP 方法 - GET 对比 POST。
jQuery $.get() 方法
$.get() 方法通过 HTTP GET 请求从服务器上请求数据。
语法:
$.get(URL,callback);
必需的 URL 参数规定您希望请求的 URL。
可选的 callback 参数是请求成功后所执行的函数名。
下面的例子使用 $.get() 方法从服务器上的一个文件中取回数据:
实例
$("button").click(function(){ $.get("demo_test.asp",function(data,status){ alert("Data: " + data + "\nStatus: " + status); }); });
$.get() 的第一个参数是我们希望请求的 URL("demo_test.asp")。
第二个参数是回调函数。第一个回调参数存有被请求页面的内容,第二个回调参数存有请求的状态。
提示:这个 ASP 文件 ("demo_test.asp") 类似这样:
<% response.write("This is some text from an external ASP file.") %>
jQuery $.post() 方法
$.post() 方法通过 HTTP POST 请求从服务器上请求数据。
语法:
$.post(URL,data,callback);
必需的 URL 参数规定您希望请求的 URL。
可选的 data 参数规定连同请求发送的数据。
可选的 callback 参数是请求成功后所执行的函数名。
下面的例子使用 $.post() 连同请求一起发送数据:
实例
$("button").click(function(){ $.post("demo_test_post.asp", { name:"Donald Duck", city:"Duckburg" }, function(data,status){ alert("Data: " + data + "\nStatus: " + status); }); });
$.post() 的第一个参数是我们希望请求的 URL ("demo_test_post.asp")。
然后我们连同请求(name 和 city)一起发送数据。
"demo_test_post.asp" 中的 ASP 脚本读取这些参数,对它们进行处理,然后返回结果。
第三个参数是回调函数。第一个回调参数存有被请求页面的内容,而第二个参数存有请求的状态。
提示:这个 ASP 文件 ("demo_test_post.asp") 类似这样:
<% dim fname,city fname=Request.Form("name") city=Request.Form("city") Response.Write("Dear " & fname & ". ") Response.Write("Hope you live well in " & city & ".") %>
也就是说
$.get()应该是不能传递data的,因为你在load()方法中说
load如果不传递参数就是用$.get(),否则使用$.post
如果$.get和$.post都可以传递data的话,那就不需要两个方法
jquery的作者肯定不能这么逗比