安装Web环境

Ajax方法需要与Web服务器端进行交互,需要有环境才可正常使用,安装环境的工具包有很多,可以选择自行下载。

jQuery中的Ajax

在jQuery中,$.ajax()方法属于最底层的方法,第2层是load(),$.get(),和$.post(),第3层是$.getScript()和$.getJSON()方法。

一、 load( ) 方法

结构
load( url , [data] , [callback] )

参数解释

捕获.PNG

1.1 应用

1.1.1首先构建一个被load()方法加载并追加到HTML文件,名字为xi.html,html代码如下:

<ul><li>《慢慢来,一切都来得及》</li><li>《你的孤独虽败犹荣》</li><li>《你只是看上去很努力》</li><li>《JavaScript从入门到放弃》</li>
</ul>
<div>你筛选出来的元素</div>

1.1.2然后再新建一个空白页面,用来追加的HTML内容,HTML代码如下:

<h3>你最喜欢读什么书?</h3>
<p id="cont"></p>
<button>点击</button>

1.1.3接下来就是编写Jquery代码了,等DOM加载完毕之后,通过单击按钮来调用load()方法,然后将xi.html的内容加载到id=“cont”的元素里。
jQuery代码如下:

$("button").click(function(){$("#cont").load("xi.html")//单击时将xi.html的内容加载到页面上})
})

运行结果:

GIF.gif

1.2筛选载入的HTML文档

上面的例子是将xi.html页面中的内容都加载到id为“cont”的元素里,如果只要加载页面内的某些内容,可以使用load(URL selector)方法的URL参数来达到目的。

注意:URL和选择器之间有一个空格。

例如只需要加载xi.html的li元素中内容,可以使用如下代码:

$("button").click(function(){$("#cont").load("xi.html li");
})

运行结果:

GIF.gif

1.3传递方式

load()方法传递方式根据参数data来自动指定。如果没有参数传递,则采用get方式,反之,则自动转换为post方式。

$("button").click(function(){$("#cont").load("xi.html li",{name:"rain",age"18"},function(){//code....});
})

1.4 回调参数

对于必须在加载完成后才能继续的操作,load()方法提供了回调函数(callback),该函数有3个参数,分别代表“请求返回的内容”,“请求状态”,“XMLHttpRequest对象”,代码如下:

$("#cont").load("xi.html li",function(responseText,textStates,XMLHttpRequest){//responseText:请求返回的内容//textStates:请求状态:success   error  notmodified  timeout4种//XMLHttpRequest:XMLHttpRequest对象});

注意:在load()方法中,无论Ajax请求是否成功,只要请求完成。回调函数就被触发。

二、 $.get( ) 方法和$.post()方法

load()通常是从web服务器上获取静态的数据文件,如果需要专递一些参数给服务器中的页面,可以使用 $.get( ) 方法和$.post()方法(或$.ajax()方法)

2.1 $.get( ) 方法

结构
$.get( url,[ data ],[ callback ],[ type ])
参数解释

捕获.PNG

2.1.1 应用

下面是一段评论页面的HTML代码,通过该段代码来介绍$.get()方法的使用。

<p><h3>评论</h3></p>
<p>姓名:<input type="text" name="" id="name"></p>
<p>内容:<textarea id="cont"></textarea></p>
<button>发表留言</button>
<hr>
<h3>已有评论</h3>
<div id="msg"></div>

该段代码生成的页面

捕获.PNG

将姓名和内容填写好后,就可以提交评论了。

确定请求的URl地址
$("button").click(function(){$.get("get_html.php",data参数,回调函数})
提交之前,将姓名和内容的值作为参数data传递给后台

$("button").click(function(){$.get("get_html.php",{"username":$("#name").val(),"content":$("#cont").val()},回调函数)
})

如果服务器结构到传递的data数据并成功返回,那么就可以通过回调函数将返回的数据显示到页面上
$.get()方法的回调函数只有两个参数,

function(){//data:返回的内容,可以是XML文档,json文件,XHML片段等等//textStatus:请求状态:success  error  notmodified timeout4种
}

data参数代表请求返回的内容,textStatus参数代表请求状态,而且回调含税只有当数据成功(success)后才能被调用

$("button").click(function(){$.get("get_html.php",{"username":$("#name").val(),"content":$("#cont").val()},function(data,textStatus,fn){if(textStatus=="success"){$(data).appendTo("#msg")}},"html");
})

运行结果

GIF.gif

2.2 $.post( ) 方法

它与$.get( )方法的结构和使用方式都相同,不过之间仍然有一下区别

2.2.1get与post区别

1.post的安全性高于get;如果以get方式请求,请求参数会拼接到url后面,安全性性低,以post方式请求,请求参数会包裹在请求体中,安全性更高

2.数量区别:get方式传输的数据量小,规定不能超过2kb,post方式请求数据量大,没有限制。

3.传输速度:get的传输速度高于post

因为使用方法相同,因此只要改变jQuery函数,就可以将程序在GET请求和POST请求之间切换

$("button").click(function(){$.post("get_html.php",{"username":$("#name").val(),"content":$("#cont").val()},function(data,textStatus,fn){if(textStatus=="success"){$(data).appendTo("#msg")}},"html");
})

运行结果和GET一样。

三、 $.getScript( ) 方法和$.getJson()方法

3.1 $.getScript( )方法

有时候,在页面出息加载时就获取所需的全部JavaScript文件是完全没有必要的,可以在需要的时候直接加载。jQuery提供了 $.getScript( )方法来直接加载js文件,与加载一个HTML片段一样简单方便,并且不需要对JavaScript文件进行处理,JavaScript文件会自动执行。

3.1.1结构
$.getScript( url , fn )
url:请求地址
fn:回调函数

3.2.1应用
新建一个basejs.js文件,随机生成颜色的函数,代码如下

function randomColor(){var str="0123456789abcdef";var color = "#";for (var i = 0; i < 6; i++) {color+=str[ Math.floor( Math.random()*str.length)];};return color;
}

当我们点击按钮时加载js文件,给body添加颜色
jQuery代码如下

$("button").click(function(){$.getScript("basejs.js",function(){$("body").click(function(){$(this).css("background-color",randomColor())})})
})

运行结果

GIF.gif

3.2 $.getJson( )方法

$.getJson( )方法用于加载JSON文件,与$.getScript( )方法的用法相同
$.getJSON( url,回调函数})
当点击加载时,页面上看不到任何效果,虽然函数加载了JSON文件,但是并没有告知JavaScript对返回的数据如何处理,为此,所以在回调函数里我们可以处理返回的数据
通常我们需要遍历我们得到的数据,虽然这里我们可以使用传统的for循环,但是我们也可以通过$.each(),可以用来遍历对象和数组,$.each()函数是以一个数组或者对象为第1个参数,以一个回调函数作为第2个参数,回调函数拥有两个参数,第1个为对象的成员或者数组的下标,第2个位对应变量或内容

$(function(){$("button").click(function(){$.getJSON( "text.json" , function( data ){$.each( data , function(index,comment){处理数据...}})})
})

四、 $.Ajax()方法

前面用到的$.load(),$.get(),$.post(),$.getScript(),$.getJSON()这些方法,都是基于$.ajax()方法构建的,$.ajax()是jQuery最底层的Ajax实现,因为可以用来代替前面的所有方法。

所以如果除了上面,还需要编写一下复杂的Ajax程序,那么就要用$.ajax(),$.ajax()不仅能实现与$.load(),$.get(),$.post()同样的功能,而且还可以设定beforeSend(提交前回调函数)、error(请求失败后处理)、success(请求成功后处理)、complete(请求完成后处理)回调函数,通过设定这些回调函数,可以给用户更多的Ajax提示信息,另外,还有一些参数可以设置Ajax请求的超时时间或者页面的“最后更改”状态。

$.ajax({
url:请求地址
type:"get | post | put | delete " 默认是get,
data:请求参数 {"id":"123","pwd":"123456"},
dataType:请求数据类型"html | text | json | xml | script | jsonp ",
success:function(data,dataTextStatus,jqxhr){ },//请求成功时error:function(jqxhr,textStatus,error)//请求失败时
})


$.ajax({url:"tom.php",type:"get",dataType:"text",success:function(data,textStatus,jqxhr){console.log("__成功__");console.log(data);console.log(textStatus);console.log(jqxhr);console.log("______");},error:function(jqxhr,textStatus,error){console.log("__失败__");console.log(error);console.log(textStatus);console.log(jqxhr);console.log("******");  }
})

番外篇1

以下引用《锋利的JQuery》

Ajax的优势

1、不需任何浏览器插件
不需任何浏览器插件,就可以被大多数浏览器所支持,用户只需要允许JavaScript在浏览器上执行即可。

2、优秀的用户体验。
最大的优点,能在不刷新整个页面的前提下更新数据,这使得Web应用程序能迅速回应用户的操作。

3、提高Web程序的性能
与传统模式相比,Ajax模式在性能上最大区别就是在于传输数据的方式,在传统模式中,数据提交是通过表单(from)来实现的,而数据获取的是靠全面刷新网页来说获取整页的内容,Ajax的模式只是通过XMLHttpRequest对象来向服务器端提交需要提交的数据,即按需发送。

4、减轻服务器和宽带的负担
Ajax的工作的原理相当于在用户和服务器之间加了一个中间层,是用户操作与服务器响应异步化,他在客户端创建Ajax引擎,把传统方式下的一些服务器负担的工作转移到客户端,便于客户端资源来处理,减轻服务器和宽带的负担。

Ajax的缺点

1、浏览器对XMLHttpRequest对象的支持度不足
Ajax的不足之一首先来自于浏览器,IE5.0及以后的版本才支持XMLHttpRequest对象(现阶段大部分客户端都在IE6以上),Mozilla,Netscape等浏览器支持XMLHttpRequest则更在其后,为了使得Ajax应用能在各个浏览器中正常运行,程序员必须花费大量的精力编码以兼顾各个浏览器之间的差别,来让Aajx应用能更好的兼容各个浏览器。

2、破坏浏览器前进、后退按钮的正常功能
在Ajax中,前进和后退按钮的功能都会失效,虽然可以通过一定的方法(添加锚点)来使用户可以使用前进和后退按钮,但相对于传统的方式却麻烦了很多,对于用户而言,他们经常会碰到这种状况,当点击一个按钮触发一个Ajax交互后又觉得不想这样做,接着就去习惯性的单击后退按钮,结果发生了最不愿意看到的结果,浏览器后退到先前的一个页面,通过Ajax交互得到的内容完全消失了。

3、对搜索引擎的支持不足
通常搜索引擎都是通过爬虫来对互联网上的数以亿计的海量数据进行搜索整理的,然而爬虫程序现在还不能理解那些奇怪的JavaScript代码和因此引起的页面内容的变化,这使得应用Ajax的站点在网络推广上相对于传统站点处于劣势。

4、开发和调试工具的缺乏
JavaScript是Ajax的重要组成部分,在目前,由于缺少很好的JavaScript开发和调试工具,使很多Web开发者对于JavaScript望而生畏,这对于编写Ajax代码就更加苦难了,勇士,目前许多Web开发者已经习惯使用可视化的工具,对于亲自编写代码有畏惧感,着她在一定程度上影响了大家对Ajax的应用。

番外篇2

jQuery中的Ajax全局事件

jQuery简化Ajax操作不仅体现在调用Ajax方法和处理响应方面,而且还体现在对调用Ajax方法过程中的HTTP请求的控制,通过jQuery提供的一些自定义全局函数,能够为各种与Ajax相关的事件注册回调函数。

例如
当Ajax请求时,会触发ajaxStart()方法回调函数

当Ajax请求结束时,会触发ajaxStop()方法的回调函数

这些都是全局函数,因此无论创建他们的代码位于何处,只要有Ajax请求时,就会触发他们。

比如,如果图片加载速度比较慢,可以给用户一些提示信息,常用的提示信息“加载中...”,代码如下

<div id="loading>加载中...</div>

然后用css控制元素隐藏,当Ajax请求开始的时候,用来提示用户正在进行,当Ajax请求结束后,将此元素隐藏。代码如下

$("#loading").ajaxStart(function(){$(this).show()
});
$("#loading").ajaxStop(function(){$(this).hide();
})

这样一来,在Ajax请求过程中,只要图片还未加载完,就会一直显示“加载中...”的提示信息,看似很简单的一个改进,确极大的改善用户的体验。
如果页面中还有其他地方也是用Ajax,该提示信息仍然有效,因为他是全局的。
jQuery的Ajax全局事件还有几个方法,也可以在使用Ajax方法的过程中为其带来方便。

捕获.PNG

捕获.PNG

jQuery-Ajax(详解)相关推荐

  1. Asp.Net+Jquery.Ajax详解5-$.getScript

    目录(已经更新的文章会有连接,从7月25日开始,每2到3天更新一篇): Asp.Net+Jquery.Ajax详解1-开篇(2012.07.25发) Asp.Net+Jquery.Ajax详解2-$. ...

  2. jQuery Ajax详解

    jQuery Ajax 全解析 本文地址: jQuery Ajax 全解析 本文作者:QLeelulu 转载请标明出处! jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并 ...

  3. Java程序员从笨鸟到菜鸟之(八十九)跟我学jquery(五)jquery中的ajax详解

    Ajax让用户页面丰富起来, 增强了用户体验. 使用Ajax是所有Web开发的必修课. 虽然Ajax技术并不复杂, 但是实现方式还是会因为每个开发人员的而有所差异.jQuery提供了一系列Ajax函数 ...

  4. 犀利开发 jQuery内核详解与实践pdf

    下载地址:网盘下载 犀利开发 jQuery内核详解与实践循序渐进地讲解了jQuery高效开发的方法和技巧,内容包括jQuery框架的设计模式和思路.Sizzle选择器的构成和工作机制.DOM文档操作. ...

  5. 视频教程-javascript/jquery全过程详解-Java

    javascript/jquery全过程详解 资深大数据.java讲师,十年开发经验,曾经任职于北大青鸟.讯腾软件等多家知名教育机构,精通javaweb, 前端技术,J2EE技术体系,熟练使用Spri ...

  6. jQuery动画详解

    jQuery动画详解 css样式 button {display: block;margin: 0 auto 20px;}div {width: 100px;height: 100px;backgro ...

  7. Ajax详解第六篇(jQuery实现Ajax)

    文章目录 AJAX 1.$.ajax() 核心函数 1.1语法 2 $.get() 2.1语法 2.2例子 3 $.post() 3.1语法 4.实战(对比) AJAX ​ 使用jQuery提供的函数 ...

  8. J2EE学习篇之--JQuery技术详解

    前面我们讲解了的J2EE的技术都是服务端的技术,下面我们来看一下前端的一些开发技术,这一篇我们来看一下jQuery技术 简介: jQuery由美国人John Resig创建,至今已吸引了来自世界各地的 ...

  9. JavaWeb = jQuery使用详解

    jQuery 是一个优秀的 javascript 的轻量级框架之一,封装了 dom 操作.事件.页面动画.异步操作等功能. 特别值得一提的是基于 jquery 的插件非常丰富,大多数前端业务场景都有其 ...

  10. 什么是ajax?ajax详解

    今天来聊一聊前后端交互的重要工具AJAX 查看全文 http://www.taodudu.cc/news/show-5108704.html 相关文章: AJAX(详解) <PYTHON3网络爬 ...

最新文章

  1. Java面试题汇总及答案2021最新(ioNio)
  2. shell-while循环
  3. 已知可生成0~4的rand5(),实现生成0~6的rand7()
  4. java线程死锁_Java线程死锁–案例研究
  5. 【RAC】How to Proceed from Failed 11gR2 CRS Installation
  6. 前端改变窗口大小内容不变形_10个前端灵魂拷问丨吃透这些就能摆脱初级前端工程师...
  7. oracle12cr2发布时间,Oracle 12cR2 发布在即
  8. 百度文本编辑器ueditor v1.2.3.0使用方法及配置(图片上传功能、目录更改)
  9. python 向MySQL里插入中文数据
  10. 《重构-改善既有代码的设计》——读后总结
  11. mapreduce代码示例_MapReduce算法示例
  12. 三线压力传感器原理_电喷摩托车进气压力传感器原理与检测
  13. Go语言web开发学习
  14. Python 导入包时报错 Traceback (most recent call last)
  15. pycharm+python3.6安装pywifi
  16. 必看,关于sql的慢查询及解决方案
  17. 一个软件项目如何做成本预估
  18. softmax函数名字的由来(代数几何原理)——softmax前世今生系列(2)
  19. 视频号如何打造爆款内容,封面、选题、文案三大维度丨国仁网络
  20. 如何快速打开计算机管理,如何打开任务管理器?3种快速打开任务管理器方法-电脑教程...

热门文章

  1. python 手机号码查询归属地
  2. 解决Clock skew detected
  3. [LeetCode 37] Sudoku Solver回溯解法
  4. Java程序员福音:349页阿里面试通关手册,助我闯进字节跳动
  5. CAJ文献转PDF文件
  6. element ui登录界面_vue vue-router vuex element-ui axios 写一个代理平台的学习笔记(四)美化头部和登录界面...
  7. PHP读取文件内容后清空文件
  8. Linux 安装MongoDB数据库及命令使用
  9. mysql闭包的概念_彻底搞懂JavaScript的闭包、防抖跟节流
  10. Ubuntu下官方QQ崩溃的解决