jQuery(7)——jQuery与Ajax的应用
---恢复内容开始---
jQuery与Ajax的应用
【Ajax的优势和不足】
优势
(1)不需要插件支持;
(2)优秀的用户体验;
(3)提高Web程序的性能;
(4)减轻服务器和宽带的负担;
不足
(1)浏览器对XMLHttpRequest对象的支持度不足;
(2)破坏浏览器前进、“后退”按钮的正常功能;
(3)对搜索引擎的支持的不足;
(4)开发和调试工具的缺乏;
【Ajax的XMLHttpRequest对象】
它是Ajax实现的关键——发送异步请求、接收响应及执行回调都是通过它来完成。
安装Web环境——AppServ
【jQuery中的Ajax】
load()方法:能载入远程HTML代码并插入DOM中。结构为:load( url [,data] [,callback])
参数解释:url:string类型,请求HTML页面的URL地址;
data(可选):object类型,发送至服务器的key/value数据;
callback(可选):function类型,请求完成时的回调函数,无论请求成功或失败。
载入HTML文档:开发人员只需要使用jQuery选择器为HTML片段指定目标位置,然后将要加载的文件的URL作为参数传给load()方法即可。主页面的样式会立即应用到新加载的内容上。
筛选载入的HTML文档:load()方法的URL参数的语法结构为:"url selector"。如:$("#resText").load("test.html .para");
传递方法:根据参数data来自动指定。如果没有参数传递,则采用GET方式传递;反之,则会自动转换成POST方式。
- //无参数传递,即GET方式
- $("resText").load("test.php",function(){
- //....
- });
- //有参数传递,即POST方式
- $("resText").load("test.php",{name:"rain",age:"22"}.function(){
- //....
- });
回调参数:对于必须在加载完成后才能继续的操作,load()方法提供了回调函数(callback),该函数有三个参数,分别代表请求返回的内容、请求状态和XTMLHttpRequest对象
- $("resText").load("test.html",function(responseText textStatus XMLHttpRequest){
- //responseText:请求返回的内容
- //textStatus:请求状态:success、error、notmodified、timeout四种
- //XMLHttpRequest:XMLHttpRequest对象
- )};
在load()方法中,无论Ajax请求是否成功,只要当请求完成后,回调函数就会被触发。
$.get()方法和$.post()方法
这两个方法是jQuery中的全局函数。可以传递一些参数给服务器中的页面。
$.get()方法:使用GET方法来进行异步请求。结构为:$.get(url [,data] [,callback] [,type])
data(可选):object类型,发送至服务器的key/value数据会作为QueryString附加请求到URL中。
callback(可选):function类型,载入成功时回调函数(只有当Response的返回状态是success才调用该方法)自动将请求结果和状态传递给该方法。
type(可选):string类型,服务器端返回内容的格式,包括xml、html、script、json、text和_default。
(1)使用参数
- $("#send").click(function(){
- $.get("get1.php",{
- username:$("#username").val(),
- content:$("#content").val()
- },回调函数);
- });
$.get()方法的回调函数只有两个参数,且只有当数据成功返回后才会被调用。代码如下
- function(data,textStatus){
- //data: 返回的内容,可以是XML文档、JSON文件、HTML片段等
- //textStatus: 请求状态:success、error、notmodified、timeout四种
- }
(2)数据格式:HTML片段、XML文档、JSON文件。
$.post()方法:与$.get()方法结构和使用方法都相同,其不同点:
(1)GET请求会将参数跟在URL后进行传递,而POST请求则是作为HTTP消息的实体内容发送给Web服务器。在Ajax请求中,这种区别对用户不可见。
(2)GET方式对传输的数据大小限制,而POST方式比GET方式大得多。
(3)GET方式请求的数据会被浏览器缓存起来,可以取得浏览器的历史记录,但也具有严重的安全问题。
(4)GET方式和POST方式传递的数据在服务器端的获取不相同。但是两种方式都可以用$_REQUEST[]来获取。
$.getScript()方法和$.geetJson()方法
$.getScript()方法:直接加载.js文件。
- $(function(){
- $('#send').click(function(){
- $getScript('test.js');
- });
- })
$.getScript()方法也有回调函数,会在JavaScript文件成功载入之后运行。
$.geetJson()方法:用于加载JSON文件,与$.getScript()方法用法相同。
$.each()函数:用于遍历对象和数组。是一个全局函数,不操作jQuery对象,而是以一个数组或者对象作为第一个参数,以一个回调函数作为第二个参数。其中回调函数拥有两个参数:第一个是对象成员或数组索引,第二个为对应变量或内容。
$.ajax()方式
结构为:$.ajax(options)。只有一个参数,但在这个对象里包含了$.ajax()方法所需要的请求设置以及回调函数等信息,参数以key/value形式存在,且所有参数都是可选的。
$.ajax()方法是jQuery最底层烦人Ajax实现,因此可以用它来代替前面提及的所有方法。
【序列化元素】
serialize()方法:作用于一个jQuery对象,能将DOM元素内容序列化为字符串,用于Ajax请求。使用该方法可以将以下代码
- $("#send").click(function(){
- $.get("get1.php",{
- username:$("#username").val(),
- content:$("#content").val()
- },function(data,textStatus){
- $("#resText").html(data); //将返回的数据添加到页面上
- });
- });
简化为
- $("#send").click(function(){
- $.get("get1.php",$("#form1").serialize(),function(data,textStatus){
- $("#resText").html(data); //将返回的数据添加到页面上
- });
- });
serialize()方法在其他选择器选取的元素也都能使用该方法:
serializeArry()方法:将DOM元素序列化后,返回JSON格式的数据。
- $(function(){
- var fields=$(":checkbox.:radio").serializeArry();
- console.log(fields); //用Firebug输出
- $.each(fields,fuction( i , field ){
- $("#results").append(field.value+",");
- });
- })
$.param()方法:是serialize()方法的核心,用来对一个数组或对象按照key/value进行序列化。
【jQuery中的Ajax全局事件】
- <div id="loading">加载中...</div>
当Ajax请求开始时,将此元素显示,当Ajax请求结束后,将此元素隐藏。
- $("#loading").ajaxStart(function(){
- $(this).show();
- });
- $("#loading").ajaxStop(function(){
- $(this).hide();
- }); //也可以用链式写法
如果想使某个Ajax请求不受全局方法的影响,那么可以在使用$.ajax(options)方法时,将参数中的global设置为false。
---恢复内容结束---
jQuery(7)——jQuery与Ajax的应用的更多相关文章
- [转载]Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...
- [jQuery]jQuery DataTables插件自定义Ajax分页实现
前言 昨天在博客园的博问上帮一位园友解决了一个问题,我觉得有必要记录一下,万一有人也遇上了呢. 问题描述 园友是做前端的,产品经理要求他使用jQuery DataTables插件显示一个列表,要实现分 ...
- 关于试用jquery的jsonp实现ajax跨域请求数据的问题
我们在开发过程中遇到要获取另一个系统数据时,就造成跨域问题,这就是下文要说的解决办法: 先我们熟悉下json和jsonp的区别: 使用AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交 ...
- Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
本文对Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法进行了详细的总结,需要的朋友可以参考下,希望对大家有所帮助. 详细解读Jquery各Ajax函数: ...
- [转]Spring3 MVC + jQuery easyUI 做的ajax版本用户管理
原文地址:http://www.iteye.com/topic/1081739 上周写了篇基于spring3.0.5 mvc 简单用户管理实例 ( http://www.iteye.com/topic ...
- Comet 反Ajax: jQuery与PHP实现Ajax长轮询
原文地址(http://justcode.ikeepstudying.com/2016/08/comet-%E5%8F%8Dajax-%E5%9F%BA%E4%BA%8Ejquery%E4%B8%8E ...
- 不借助jquery封装好的ajax,你能用js手写ajax框架吗
不借助jquery封装好的ajax,你能手写ajax框架吗?最基础的ajax框架,一起来围观吧. .创建XMLHttpRequest对象 var xhr = new XMLHttpRequest(); ...
- [译]脱离jQuery,使用原生Ajax
脱离jQuery,使用原生Ajax 标签: Ajax translate 英文出处:<A Guide to Vanilla Ajax Without jQuery> 翻译: 刘健超 J.c ...
- 转载 : Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结
Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结 投稿:jingxian 字体:[增加 减小] 类型:转载 时间:2013-11-14我要评论 本文是 ...
- JQuery(三) Ajax相关
JQuery大大简化了Ajax通用操作,开发者只需要指定请求URL,回调函数即可. 三个主要方法: $().param(obj):将obj参数(对象或数组)转化成查询字符串. {name:" ...
随机推荐
- OleDbCommand cmd.Parameters.AddWithValue 添加参数时需要按照存储过程参数的顺序加入
在使用存储过程时,参数出入的顺序要一致.
- function返回值Python特殊语法:filter、map、reduce、lambda
废话就不多说了,开始... Python内置了一些非常有趣但非常有用的函数,充分体现了Python的语言魅力! filter(function, sequence):对sequence中的item顺次 ...
- ajax的分页查询(不刷新页面)
既然是分页查询,那么就要有张数据很多的表,可以让它进行分页显示,用普通的方法进行分页查询必然是要刷新页面的,这里要实现不刷新页面进行分页显示数据,就要用到ajax方式.进行编写代码 (1)先写个显示数 ...
- 如何优雅的设计Redux中的Store
用了几个月的redux,现在回过来总结一下. 刚开始用的时候遇到一个比较大的疑问,就是如何设计redux的store中的state树,这应该是我在使用redux中最大的一个疑问,阻挡了我前进的脚步,当 ...
- 你的MongoDB Redis设置用户名密码了吗?看看shodan这款邪恶的搜索引擎吧!~
早上看新闻的时候看到了个醒目的新闻 开源中国:MongoDB 赎金事件持续发酵,究竟是谁之过? 博客园:MongoDB数据库勒索,中国受害者数量超乎你的想象,SOS! 1. 由于自己之前做过的项目,R ...
- jmeter连接数据库
新建一个 Thread Group: 新增 JDBC Connection Configuration: 点击新增的 JDBC Connection Configuration ,需要修改的参数包括: ...
- json格式化和查看工具
以前一直以来都觉得xml个可读性要比json的可读性好,后来使用了JSON Viewer这个小工具之后,发现自己错了.之前认为json的可读性差,完全是因为没有很好的查看工具.JSON Viewer这 ...
- 在2002年的老电脑上安装Debian
在2002年自己花了家里八千多元买了一台联想昭笔记本电脑.配置是PIII 750 Hz, 128 MB内存(后来升级到了320 MB).那个时候大学里买笔记本电脑的人还不多,宿舍里的同学大都攒的台式机 ...
- one hot encoding
转自:http://blog.sina.com.cn/s/blog_5252f6ca0102uy47.html 问题由来 在很多机器学习任务中,特征并不总是连续值,而有可能是分类值. 例如,考虑一下的 ...
- python中的二维数组90度旋转
data=[[col for col in range(4)] for raw in range(4)] #创建一个二维数组 for n in data: print (n) print('\n') ...