详谈jQuery Ajax(load,post,get,ajax)的用法


Posted in Javascript onMarch 02, 2017

今天看到群里面有网友们问到Jquery Ajax的(load,post,get,ajax)之间的区别,现在整理了一篇文章出来,希望可以帮到网友们,首先我们先来看一些简单的方法,

这些方法都是对jQuery.ajax()进行封装以方便我们使用的方法,当然,如果要处理复杂的逻辑,还是需要用到jQuery.ajax()的(这个后面会说到).

1、 load( url, [data], [callback] ) :载入远程 HTML 文件代码并插入至 DOM 中。

url (String): 请求的HTML页的URL地址。

data (Map) : (可选参数) 发送至服务器的 key/value 数据。

callback (Callback) : (可选参数) 请求完成时(不需要是success的)的回调函数。

这个方法默认使用 GET 方式来传递的,如果[data]参数有传递数据进去,就会自动转换为POST方式的。jQuery 1.2 中,可以指定选择符,

来筛选载入的 HTML 文档,DOM 中将仅插入筛选出的 HTML 代码。语法形如 "url #some > selector"。

这个方法可以很方便的动态加载一些HTML文件,例如表单。

示例代码:

$(".ajax.load").load("https://3water.com",function (responseText, textStatus, XMLHttpRequest){this;//在这里this指向的是当前的DOM对象,

即$(".ajax.load")[0] //alert(responseText);//请求返回的内容//alert(textStatus);//请求状态:success,error//alert(XMLHttpRequest);//XMLHttpRequest对象});

注:不知道为什么URL写绝对路径在FF下会出错,知道的麻烦告诉下。下面的get()和post()示例使用的是绝对路径,所以在FF下你将会出错并不会看到返回结果。还有get()和post()示例都是跨域调用的,发现传上来后没办法获取结果,所以把运行按钮去掉了。

2、 jQuery.get( url, [data], [callback] ):使用GET方式来进行异步请求

参数:

url (String): 发送请求的URL地址.

data (Map): (可选) 要发送给服务器的数据,以 Key/value 的键值对形式表示,会做为QueryString附加到请求URL中。

callback (Function): (可选) 载入成功时回调函数(只有当Response的返回状态是success才是调用该方法)。

这是一个简单的 GET 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。

示例代码:

$.get("./Ajax.aspx", {Action:"get",Name:"lulu"}, function (data, textStatus){//返回的 data 可以是 xmlDoc, jsonObj, html, text, 等等.this; // 在这里this指向的是Ajax请求的选项配置信息,请参考下图alert(data);//alert(textStatus);//请求状态:success,error等等。

当然这里捕捉不到error,因为error的时候根本不会运行该回调函数//alert(this);});

点击发送请求:

jQuery.get()回调函数里面的 this ,指向的是Ajax请求的选项配置信息:

3、 jQuery.post( url, [data], [callback], [type] ) :使用POST方式来进行异步请求

参数:

url (String) : 发送请求的URL地址.

data (Map): (可选) 要发送给服务器的数据,以 Key/value 的键值对形式表示。

callback (Function): (可选) 载入成功时回调函数(只有当Response的返回状态是success才是调用该方法)。

type (String) : (可选)官方的说明是:Type of data to be sent。其实应该为客户端请求的类型(JSON,XML,等等)

这是一个简单的 POST 请求功能以取代复杂 $.ajax 。请求成功时可调用回调函数。如果需要在出错时执行函数,请使用 $.ajax。

示例代码:

Ajax.aspx:

Response.ContentType = "application/json";Response.Write("{result: '" + Request["Name"] + ",你好!(这消息来自服务器)'}");

jQuery 代码:

$.post("Ajax.aspx", { Action: "post", Name: "lulu" },function (data, textStatus){// data 可以是 xmlDoc, jsonObj, html, text, 等等.//this; // 这个Ajax请求的选项配置信息,请参考jQuery.get()说到的thisalert(data.result);}, "json");

点击提交:

这里设置了请求的格式为"json":

如果你设置了请求的格式为"json",此时你没有设置Response回来的ContentType 为:Response.ContentType = "application/json"; 那么你将无法捕捉到返回的数据。

注意一下,alert(data.result); 由于设置了Accept报头为“json”,这里返回的data就是一个对象,并不需要用eval()来转换为对象。

4、 jQuery.getScript( url, [callback] ) : 通过 GET 方式请求载入并执行一个 JavaScript 文件。

参数

url (String) : 待载入 JS 文件地址。

callback (Function) : (可选) 成功载入后回调函数。

jQuery 1.2 版本之前,getScript 只能调用同域 JS 文件。 1.2中,您可以跨域调用 JavaScript 文件。注意:Safari 2 或更早的版本不能在全局作用域中同步执行脚本。如果通过 getScript 加入脚本,请加入延时函数。

这个方法可以用在例如当只有编辑器focus()的时候才去加载编辑器需要的JS文件.下面看一些示例代码:

加载并执行 test.js。

jQuery 代码:

$.getScript("test.js");

加载并执行 AjaxEvent.js ,成功后显示信息。

jQuery 代码:

$.getScript("AjaxEvent.js", function(){alert("AjaxEvent.js 加载完成并执行完成.你再点击上面的Get或Post按钮看看有什么不同?");});

jQuery Ajax 事件

Ajax请求会产生若干不同的事件,我们可以订阅这些事件并在其中处理我们的逻辑。在jQuery这里有两种Ajax事件:局部事件 和 全局事件。

局部事件就是在每次的Ajax请求时在方法内定义的,例如:

$.ajax({beforeSend: function(){// Handle the beforeSend event},complete: function(){// Handle the complete event}// ...});

全局事件是每次的Ajax请求都会触发的,它会向DOM中的所有元素广播,在上面 getScript() 示例中加载的脚本就是全局Ajax事件。全局事件可以如下定义:

$("#loading").bind("ajaxSend", function(){$(this).show();}).bind("ajaxComplete", function(){$(this).hide();});

或者:

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

我们可以在特定的请求将全局事件禁用,只要设置下 global 选项就可以了:

$.ajax({url: "test.html",global: false,// 禁用全局Ajax事件.// ...});

以上这篇详谈jQuery Ajax(load,post,get,ajax)的用法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript国旗变换效果代码
Aug 13 Javascript
PPK 谈 JavaScript 的 this 关键字 [翻译]
Sep 29 Javascript
初学Jquery插件制作 在SageCRM的查询屏幕隐藏部分行的功能
Dec 26 Javascript
jQuery获取(选中)单选,复选框,下拉框中的值
Feb 21 Javascript
微信小程序商城项目之侧栏分类效果(1)
Apr 17 Javascript
基于JavaScript实现无限加载瀑布流
Jul 21 Javascript
Javascript刷新页面的实例
Sep 23 Javascript
ES6 迭代器(Iterator)和 for.of循环使用方法学习(总结)
Feb 08 Javascript
layui弹出层按钮提交iframe表单的方法
Aug 20 Javascript
详解webpack打包时排除其中一个css、js文件或单独打包一个css、js文件(两种方法)
Oct 26 Javascript
JS异步宏队列与微队列原理区别详解
Jul 02 Javascript
JS监听Esc 键触发事键
Apr 14 Javascript
Bootstrap入门教程一Hello Bootstrap初识
Mar 02 #Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
Mar 02 #Javascript
jQuery上传多张图片带进度条样式(DEMO)
Mar 02 #Javascript
jquery仿京东侧边栏导航效果
Mar 02 #Javascript
关于jQuery EasyUI 中刷新Tab选项卡后一个页面变形的解决方法
Mar 02 #Javascript
JavaScript html5利用FileReader实现上传功能
Mar 27 #Javascript
利用ES6语法重构React组件详解
Mar 02 #Javascript
You might like
DedeCMS 核心类TypeLink.class.php摘要笔记
2010/04/07 PHP
七款最流行的PHP本地服务器分享
2013/02/19 PHP
php获取汉字拼音首字母的方法
2015/10/21 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
javascript动态添加表格数据行(ASP后台数据库保存例子)
2010/05/08 Javascript
JavaScript性能陷阱小结(附实例说明)
2010/12/28 Javascript
基于JQuery的抓取博客园首页RSS的代码
2011/12/01 Javascript
JavaScript 学习笔记之一jQuery写法图片等比缩放以及预加载
2012/06/28 Javascript
jquery特效 幻灯片效果示例代码
2013/07/16 Javascript
jquery delay()介绍及使用指南
2014/09/02 Javascript
JavaScript fontcolor方法入门实例(按照指定的颜色来显示字符串)
2014/10/17 Javascript
JavaScript通过Date-Mask将日期转换成字符串的方法
2015/06/04 Javascript
jQuery插件datepicker 日期连续选择
2015/06/12 Javascript
jQuery实现的省市联动菜单功能示例【测试可用】
2017/01/13 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
深入浅析Vue不同场景下组件间的数据交流
2017/08/15 Javascript
Vue2.0子同级组件之间数据交互方法
2018/02/28 Javascript
详解element-ui日期时间选择器的日期格式化问题
2019/04/08 Javascript
vue实现单一筛选、删除筛选条件
2020/10/26 Javascript
如何利用vue实现波谱拟合详解
2020/11/05 Javascript
python检测远程端口是否打开的方法
2015/03/14 Python
python3之微信文章爬虫实例讲解
2017/07/12 Python
python3利用Dlib19.7实现人脸68个特征点标定
2018/02/26 Python
pandas 两列时间相减换算为秒的方法
2018/04/20 Python
python登录WeChat 实现自动回复实例详解
2019/05/28 Python
python读取并定位excel数据坐标系详解
2019/06/26 Python
Django框架模型简单介绍与使用分析
2019/07/18 Python
HTML5手指下滑弹出负一屏阻止移动端浏览器内置下拉刷新功能的实现代码
2020/04/10 HTML / CSS
判断单链表中是否存在环
2012/07/16 面试题
致短跑运动员广播稿
2014/01/09 职场文书
写演讲稿所需要注意的4个条件
2014/01/09 职场文书
小学教师听课制度
2014/02/01 职场文书
机械工程师岗位职责
2014/06/16 职场文书
2014年党建工作汇报材料
2014/11/02 职场文书
公司员工辞职信范文
2015/05/12 职场文书
升学宴家长答谢词
2015/09/29 职场文书