jQuery 学习笔记之十 (jQuery ajax )
jQuery中的Ajax
jQuery对Ajax操作进行了封装,在jQuery中$.ajax()方法属于最底层的方法,第2层是load(),$.
get
()和$.post()方法,第三层是$.getScript()和$.getJson()方法。首先介绍第2层得方法,使用效率很高。
load()方法
1.载入HTML文档
load()方式jQuery中最为简单的Ajax方法,能载入远程HTML代码并插入DOM中,它的结构为:
load(url[,data][,callback]);
load()方法参数解释如表6-1所示。
load参数说明:
参数名称 类型 说明
url
string
请求html的url地址
data(可选)
object
发送至服务器的key/value数据
callback function 请求完成时的回调函数,
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>
<html xmlns=
"http://www.w3.org/1999/xhtml"
>
<head>
<title></title>
<meta http-equiv=
"Content-Type"
content=
"text/html; charset=utf-8"
/>
<style type=
"text/css"
>
* { margin:0; padding:0;}
body { font-size:12px;}
.comment { margin-top:10px; padding:10px; border:1px solid #ccc;background:#DDD;}
.comment h6 { font-weight:700; font-size:14px;}
.para { margin-top:5px; text-indent:2em;background:#DDD;}
</style>
<!-- 引入jQuery -->
<script src=
"../scripts/jquery-1.3.1.js"
type=
"text/javascript"
></script>
<script language=
"javascript"
type=
"text/javascript"
>
$(function(){
$(
"#send"
).click(function(){
$(
"#resText"
).load(
"test.html"
);
})
})
</script>
</head>
<body>
<input type=
"button"
id=
"send"
value=
"Ajax获取"
/>
<div
class
=
"comment"
>
已有评论:
</div>
<div id=
"resText"
></div>
</body>
</html>
test.html 页面里并没有添加样式,但现在加载的内容有样式了,这些样式是在主页面中添加的,
即主页面相应的样式会立即应用到新加载的内容上。
传递方式
load()方法得传递方式根据参数data来自动指定,如果没有参数传递,则采用
get
方式传递;反之,
则自动转换为post方式。
//无参数传递
$(
"#resText"
).laod(
"test.php"
,function(){
});
//有参数传递,则是post方式
$(
"#resText"
).laod(
"test.php"
,{name:
"rain"
,age:
"22"
},function(){
});
回调参数
对于必须加载完后才能继续操作,load()方法提供了回调函数(callback),该函数有3个参数,
分别代表请求返回的内容,请求状态和XMLHttpRequest 对象,jQuery代码如下:
$(
"#resText"
).laod(
"test.html"
,function(responseText,textStatus,XMLHttpRequest)){
//请求返回的内容
//请求状态 success error notmodiffed,timeout 4种
//XMLHttpRequest: XMLHttpRequest
}
在load()方法中,无论Ajax请求是否成功,只要当请求完成complete后,回调函数(callback)就被触发,对应下面将介绍$.ajax()方法中的complete回调函数。
$.
get
()方法和$.post()方法
laod()方法通常用来从web服务器上获取静态的数据文件,然而这并不能体现Ajax的全部价值,在项目中,如果需要传递一些参数给服务器的页面,那么可以使用$.
get
()或者
$.post()方法,或者是$.ajax()方法。
$
get
()和$post()方法是jQuery中的全局函数,而在此之前得jQuery方法都是对jQuery对象进行操作的。
$.
get
()方法
$.
get
()方法使用GET方式来进行异步请求。
它的结构为
$.
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
(1) 使用参数
首先,需要确定请求页面的URL地址
$(
"#send"
).click(function(){
$.
get
(
"get1.php"
,data参数,回调函数);
});
然后,在提交之前,需要获取
"姓名"
和
"内容"
的值为data参数传递给后台。
$(
"#send"
).click(function(){
$.
get
(
"get1.php"
),{
username:$(
"#usernmae"
).val(),
content:$(
"#content"
).val()
},回调函数
}
} )
$.
get
()方法得回调函有两个参数
function(data,textstatus){
//data 返回的内容,可以使xml文档,json文件,HTML片段等等
//testStatus: 请求状态: success,error,notmodified,timeout4种
}
data 代表请求的参数,state代表请求的状态,回调函数只有当翻书success可以被调用。
由于服务器端返回的数据格式可能有多种,他们都可以完成同样的任务,分别介绍一下
HTML片段
返回的是HTML片段,不需要特殊的处理,就可以将新的数据插入到主页面中。
$(function(){
$(
"#send"
).click(function(){
$.
get
(
"get1.php"
,{
username: $(
"#username"
).val(),
content: $(
"#content"
).val()
},function(data,textStatus){
$(
"#resText"
) .html(data);
//将返回的数据添加到页面上
});
})
})
HTML 片段实现起来比较简单,但是不一定能够在其他的web应用程序中得到重用。
处理XML文档
游湖服务器端返回的数据格式是XML文档,因此需要对返回的数据进行处理,前面的章节已经介绍过jQuery强大的DOM处理能力,处理XML文档与处理HTML文档一样
可以使用常规的attr(),find(),filter()以及其他方法
$(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(txtHtml);
//将返回的数据添加到页面上
})
})
})
json 文件
xml文档体积大和难以解析.json 文件和xml文档一样,也可以方便的被重用,而且json 文件简洁,容易阅读
由于服务器返回的数据格式是json 文件,因此需要对放回的数据进行处理之后,才可以将新的HTML数据调价到主页面中。
$(function(){
$(
"#send"
).click(function(){
$(
"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(textHtml);
})
})
},
"json"
)
在上面的代码中,将$.
get
()方法得第4个参数(type)设置为json 来代表期待服务器端返回的数据格式。
$.post()方法
它与$.
get
()方法得结构和使用方式多相同,不过他们之间仍然有一些区别
GET 请求会将参数跟在URL后进行传递,而POST 请求则是作为HTTP消息的实体内容发送给WEB服务器。
当然在ajax请求中,这种区别对用户是不可见的。
GET 方式对传输的数据有大小限制(通常不能大于2KB),而使用POST方式传递的数据量要不GET方式大的多(理论上不受限制)。
GET方式请求的数据会被浏览器缓存起来,因此其他人就可以从浏览器的历史记录中读取到这些数据,例如账号和密码等。
在某种情况下,GET方式会带来严重的安全性问题,而POST 方式相对来说可以避免这些问题。
建议是用POST请求
$(function(){
$(
"#send"
) .click(function(){
$post(
"post1.php"
,{
username:$(
"#username"
).val(),
content:$(
"content"
).val()
},function(data,textStatus){
$(
"#resText"
).append(data);
//将返回的数据添加到页面上
});
});
})
$ajax()方法不仅能实现与load(),$.
get
() 和$.post()方法相同的功能,而且还可以设定beforeSend(提交钱回调函数),
error(请求失败后处理),success(请求成功后处理)以及complete(请求完成后处理)回调函数,通过这些回调函数,可以给哟高呼更多的ajax提示信息
另外,还有一些参数,可以设置Ajax请求的超时时间或者页面的“最后更改 ”状态等等。关于$.ajax()方法将在后面的章节中进行详解。
$getScript方法和$getJson方法
1.$getScript()
有时候,在页面初次加载时就去的所需的全部JavaScipt文件是完全没有必要的,虽然可以在需要哪个JavaScript文件时,动态地创建<script>标签,jQuery代码如下:
$(document.createElement(
"script"
)).attr(
"src"
,
"test.js"
);.appendTo(
"head"
);
或者
$(
"<script type='text/javascript' src='text.js'/>"
).appendTo(
"head"
);
这种方式并不理想,jquery提供了$.getScript()方法来直接加载.js文件,与加载一个HTML片段一样简单方便。不要对javascript文件进行处理。
$(function(){
$(
"#send"
).click(function(){
$.getScript(
'test.js'
);
});
})
$getJSON()
$getJSON()方法用于加载JSON文件,与$.getScript()方法得用法相同。
jQuery代码如下:
$(function(){
$(
'#send'
).click(function(){
$.getJson(
'test.json'
);
})
})
单击按钮
"加载"
按钮后,网页上没有效果,虽然加载了json文件但是并没有告诉javascript对返回的数据处理,为此jquery 提供回调函数,在回调函数里面处理返回的数据。
$(function(){
$(
"#send"
).click(functioin(){
$.getJSON(
'test.json'
,function(data){
//data 返回数据
})
})
})
可以在函数中通过data变量来遍历相应的数据,也可以使用迭代方式为每个项构建相应的HTML代码。
$each()函数不同于jQuery对象的each()方法,它是一个全局函数,不操作jQuery对象,而是以一个数组或者对象作为第1个参数,
以一个回调函数作为第2个参数,回调函数拥有两个参数,第1个位对象的成员或数组的索引,第2个为对应变量或内容。
$(function(){
$(
'#send'
).click(function(){
$.getJSON(
'test.json'
,function(data){
$(
'#resText'
).empty();
var html=
''
;
$each(data,functioin(commentindex,comment){
html+=
'<div class="comment"><h6> '
+comment[
'username'
]+
':</h6><p class="para">'
+comment[
'content'
]+
'</p></div>'
;
});
$(
"#resText"
).html(html);
})
})
})
出处:http://www.cnblogs.com/liuyong/
转载于:https://www.cnblogs.com/moyiqun/archive/2013/06/06/3121170.html
jQuery 学习笔记之十 (jQuery ajax )相关推荐
- JavaScript程序库jQuery学习笔记分享(二)jQuery对象和DOM操作,和其他js库冲突处理
今天我继续更新jQuery学习笔记,最近考试比较忙,也就更新的比较慢了,这里向大家说一声抱歉,嘻嘻. 让那不愉快的情绪过去吧,继续进行我们的jQuery之旅吧. 一:jQuery对象和DOM对象 1. ...
- jQuery 学习笔记之二 (jQuery代码风格)
jquery 学习之代码风格 对于同一个对象的较多操作,建议每行写一个操作,代码如下: $(this).removeClass() .addClass() .stop() .fadeTo(" ...
- jQuery 学习笔记之二 (jQuery代码风格)
jquery 学习之代码风格对于同一个对象的较多操作,建议每行写一个操作,代码如下: $(this).removeClass() .addClass() .stop() .fadeTo("f ...
- Jquery学习笔记:获取jquery对象的基本方法
jquery最大的好处是将js对html页面的操作(读写)进行了封装,隔离了浏览器的差异性,并简化了操作,和提供了强大的功能. 在web页面中,所有的js操作都是围绕操作dom对象来的.而jquery ...
- jQuery学习教程二十: jQuery 遍历 - 后代
后代是子.孙.曾孙等等. 通过 jQuery,您能够向下遍历 DOM 树,以查找元素的后代. 向下遍历 DOM 树 下面是两个用于向下遍历 DOM 树的 jQuery 方法: children() f ...
- jQuery 学习笔记之十二 (选项卡)
jQuery 实现的一个简单的选项卡. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" &quo ...
- jQuery 学习笔记之十六 评分
单击产品小图片时,上面对应的大图片需要切换,并且大图片的放大镜效果和遮罩效果也必须同时切换. 实现这个效果并不难,但为了使程序更加简单,需要为图片使用基于某种规则的命名. 例如为小图片命名blue_o ...
- jQuery 学习笔记一(认识jQuery jQuery选择器 jQuery中的DOM操作)
第一章 认识jQuery jQuery代码风格 $(document).ready(function(){ //... }); 简化 $(function(){ //... }); jQuery对象转 ...
- jQuery 学习笔记之九 (jQuery 图片提示 )
案例研究 网站的超链接和图片提示1.超级链接提示效果浏览器已经自带了超级链接提示,只需要在超链接中加入title属性就可以了.HTML 代码如下:<a href="#" ti ...
- jquery学习笔记(-)
Jquery学习笔记(-) Jquery的简介 Jquery是继prototype之后又一个优秀的Javascrīpt框架.它是轻量级的js库(压缩后只有21k),兼容各种浏览器(IE6.0+,FF1 ...
最新文章
- android ui 最新教程,Android更新UI的五种方式,androidui五种
- hbase或hadoop错误及解决方法
- GitHub 大热!也许会成为你心中的OCR开源工具NO1!
- springcloud alibab + sentinel1.8.1集成文档
- 自我认为挺全面的【Web Service渗透测试总结】
- hbuilderx简单网页代码_Python爬取网页数据
- 使用indent格式化代码
- javascript一些基础用法
- monkey测试_安卓测试之monkey
- ts获取服务器数据_怎么使用Satruts2实现页面列表数据导出到Excel表格
- Lombok的使用方法
- block--内存管理
- ant 时 --java.lang.NoSuchMethodError: org.apache.tools.ant.util.FileUtils.getFileUtils 解决方法
- Hello IDEA
- json字符串中的大括号转义传到后台_string.format格式化字符串中转义大括号“{}”...
- sqlserver中的函数
- 杰奇小说2.3独家定制版淡绿唯美模板自动采集关关采集器带WAP
- linux USB从设备使用gadget实现大容量存储设备
- caxa 二次开发 应用程序框架分析
- iOS @available 和 #available 的用法