详细解读Jquery各Ajax函数($.get(),$.post(),$.ajax(),$.getJSON())


Posted in Javascript onAugust 15, 2016

一,$.get(url,[data],[callback])

说明:url为请求地址,data为请求数据的列表,callback为请求成功后的回调函数,该函数接受两个参数,第一个为服务器返回的数据,第二个参数为服务器的状态,是可选参数。

而其中,服务器返回数据的格式其实是字符串形势,并不是我们想要的json数据格式,在此引用只是为了对比说明
$.get("data.php",$("#firstName.val()"),function(data){$("#getResponse").html(data); }//返回的data是字符串类型);

二,$.post(url,[data],[callback],[type])

说 明:这个函数跟$.get()参数差不多,多了一个type参数,type为请求 的数据类型,可以是html,xml,json等类型,如果我们设置这个参数为:json,那么返回的格式则是json格式的,如果没有设置,就 和$.get()返回的格式一样,都是字符串的
$.post("data.php",$("#firstName.val()"),function(data){$("#postResponse").html(data.name);},"json"//设置了获取数据的类型,所以得到的数据格式为json类型的);

三,$.ajax(opiton)

说明:$.ajax()这个函数功能强大,可以对ajax进行许多精确的控制,需要详细说明的请参照相关资料
$.ajax({url: "ajax/ajax_selectPicType.aspx",data:{Full:"fu"},type: "POST",dataType:'json',success:CallBack,error:function(er){BackErr(er);}});

四,$.getJSON(url,[data],[callback])

$.getJSON("data.php",$("#firstName.val()"),function(jsonData){$("#getJSONResponse").html(jsonData.id);}//无需设置,直接获取的数据类型为json,所以调用时需要使用jsonData.id方式);

When Ajax meets jQuery 基于AJAX的应用现在越来越多,而对于前台开发人员来说,直接和底层的HTTPRequest打交道又不是一件令人愉快的事情。jQuery既然封装了 JavaScript,肯定已经考虑过AJAX应用的问题。的确,如果用jQuery写AJAX会比直接用JS写方便N倍。(不知道用jQuery长了, 会不会丧失对JS的知识了……) 这里假设大家对jQuery语法已经比较熟悉,来对ajax的一些应用作一些总结。

载入静态页面

load( url, [data], [callback] ); url (String) 请求的HTML页的URL地址
data (Map)(可选参数) 发送至服务器的 key/value 数据
callback (Callback) (可选参数) 请求完成时(不需要是success的)的回调函数
load()方法可以轻松载入静态页面内容到指定jQuery对象。$('#ajax-div').load('data.html');
这样,data.html的内容将被载入到ID为ajax-div的DOM对象之内。你甚至可以通过制定ID来实现载入部分内容的Ajax操作,如:
$('#ajax-div').load('data.html#my-section');

实现GET和POST方法

get( url, [data], [callback] ) url (String) 发送请求的URL地址.

data (Map)(可选参数) 要发送给服务器的数据,以 Key/value 的键值对形式表示,会做为QueryString附加到请求URL中
callback (Callback) (可选参数) 载入成功时回调函数(只有当Response的返回状态是success才是调用该方法)

很显然这是一个专门实现GET方式的函数,使用起来也相当的简单

$.get('login.php', { id : 'Robin', password: '123456', gate : 'index' }, function(data, status) { //data为返回对象,status为请求的状态 alert(data); //此时假设服务器脚本会返回一段文字"你好,Robin!",那么浏览器就会弹出对话框显示该段文字 
alert(status); //结果为success, error等等,但这里是成功时才能运行的函数 });
post( url, [data], [callback], [type] ) url (String) 发送请求的URL地址.
data (Map)(可选参数) 要发送给服务器的数据,以 Key/value 的键值对形式表示
callback (Callback) (可选参数) 载入成功时回调函数(只有当Response的返回状态是success才是调用该方法)
type (String) (可选参数) 请求数据的类型,xml,text,json等
同样是jQuery提供的一个简便函数,其实用法$.post('regsiter.php', { id:'Robin', password: '123456', type:'user' },function(data, status) { alert(data); }, "json");

事件驱动的脚本载入函数:getScript()

getScript( url, [callback] ) url (String) 待载入 JS 文件地址

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

getScript() 函数可以远程载入JavaScript脚本并且执行。这个函数可以跨 域载入JS文件(神奇……?!)。这个函数的意义是巨大 的,它可以很大程度的缩减页面初次载入的代码量,因为你可以根据用户的交互来载入相应的JS文件,而不必在页面初始化的时候全部载入。

$.getScript('ajaxEvent.js', function() { alert("Scripts Loaded!"); //载入ajaxEvent.js,并且在成功载入后显示对话框提示。 
});

构建数据通讯的桥梁:getJSON()

getJSON(url,[data],[callback]) url (String) 发送请求地址

data (Map) (可选) 待发送 Key/value 参数

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

JSON 是一种理想的数据传输格式,它能够很好的融合与JavaScript或其他宿主语 言,并且可以被JS直接使用。使用JSON相比传统的通过 GET、POST直接发送”裸体”数据,在结构上更为合理,也更为安全。至于jQuery的getJSON()函数,只是设置了JSON参数的 ajax()函数的一个简化版本。

这个函数也是可以跨域使用的,相比get()、post()有一定优势。另外这个函数可以通过把请求url写 成”myurl?callback=X”这种格式,让程序执行回调函数X。

$.getJSON('feed.php',{ request: images, id: 001, size: large }, function(json) { alert(json.images[0].link); 
//此处json就是远程传回的json对象,假设其格式如下: 
//{'images' : [ 
// {link: images/001.jpg, x :100, y : 100}, 
// {link: images/002.jpg, x : 200, y 200:} 
//]}; 
} );

更底层的ajax()函数

虽然get()和post()函数非常简洁易用,但是对于更复杂的一些设计需求还是无法实现,比如在ajax发送的不同时段做出不同的动作等。jQuery提供一个更为具体的函数:ajax()。

ajax( options ) ajax()提供了一大票参数,所以可以实现相当复杂的功能。

你 可以指定xml、script、html、json作为其数据类型,可以为beforeSend、error、sucess、complete等状态设置 处理函数,众多其它参数也可以订完完全全定义用户的Ajax体验。下面的例子中,我们用ajax()来调用一个XML文档:

$.ajax({ 
url: 'doc.xml', 
type: 'GET', 
dataType: 'xml', 
timeout: 1000, 
error: function(){ 
alert('Error loading XML document'); 
}, 
success: function(xml){ 
alert(xml); 
//此处xml就是XML的jQuery对象了,你可以用find()、next()或XPath等方法在里面寻找节点,和用jQuery操作HTML对象没有区别 
}});

进一步了解AJAX事件

前面讨论的一些方法都有自己的事件处理机制,从页面整体来说,都只能说是局部函数。jQuery提供了AJAX全局函数的定义,以满足特殊的需求。下面是jQuery提供的所有函数(按照触发顺序排列如下):

ajaxStart (全局事件) 开始新的Ajax请求,并且此时没有其他ajax请求正在进行 beforeSend (局部事件) 当一个Ajax请求开始时触发。如果需要,你可以在这里设置XMLHttpRequest对象 ajaxSend (全局事件) 请求开始前触发的全局事件 success (局部事件) 请求成功时触发。即服务器没有返回错误,返回的数据也没有错误 ajaxSuccess 全局事件全局的请求成功 error (局部事件) 仅当发生错误时触发。

你无法同时执行success和error两个回调函数 ajaxError 全局事件全局的发生错误时触发 complete (局部事件) 不管你请求成功还是失败,即便是同步请求,你都能在请求完成时触发这个事件 ajaxComplete 全局事件全局的请求完成时触发 ajaxStop (全局事件) 当没有Ajax正在进行中的时候,触发局部事件在之前的函数中都有介绍,我们主要来看看全局事件。对某个对象进行全局事件监听,那么全局中的AJAX动作,都会对其产生影响。比如,当页面在进行AJAX操作时,ID为”loading”的DIV就显示出来:

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

全局事件也可以帮助你编写全局的错误相应和成功相应,而不需要为每个AJAX请求独立设置。有必要指出,全局事件的参数是很有用的。除了 ajaxStart、ajaxOptions,其他事件均有event, XMLHttpRequest, ajaxOptions三个参数。第一个参数即事件本身;第二个是XHR对象;第三个是你传递的ajax参数对象。在一个对象里显示全局的AJAX情况:

$("#msg").beforeSend(function(e,xhr,o) { $(this).html("正在请求"+o.url); }).ajaxSuccess(function(e,xhr,o) { $(this).html(o.url+"请求成功"); }).ajaxError(function(e,xhr,o) { $(this).html(o.url+"请求失败");});

很显然,第三个参数也可以帮助你传递你在AJAX事件里加入的自定义参数。
在单个AJAX请求时,你可以将global的值设为false,以将此请求独立于AJAX的全局事件。

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

如果你想为全局AJAX设置参数,你会用上ajaxSetup()函数。

例如,将所有AJAX请求都传递到request.php,;禁用全局方法;强制用POST方法传递:

$.ajaxSetup({ url: "request.php", global: false, type: "POST"});

一些你不得不知道的方法

写AJAX肯定离不开从页面获取相应的值。在这里简单列举一些方法:

val() val()函数可以返回表单组建的值,例如任何种类input的值。

配合选择符操作,你可以轻易获取选项组、输入框、按钮等元素的值。

$("input[name='info']:text").val();//返回名字为info的文本框的值$("input[name='pass']:password").val();//返回名字为pass的密码框的值
$("input[name='save']:radio").val();//返回名字为save的单选项的值//以此类推serialize() serialize函数可以帮你把表单对象的所有值都转换为字符串序列。

如果你要写GET格式的请求,这个就非常方便了。

serializeArray() 和serialize()类似,只不过它返回的是JSON对象。

以上所述是小编给大家介绍的详细解读Jquery各Ajax函数($.get(),$.post(),$.ajax(),$.getJSON()),希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript调试说明
Jun 07 Javascript
javascript删除option选项的多种方法总结
Nov 22 Javascript
jQuery中children()方法用法实例
Jan 07 Javascript
JavaScript实现快速排序的方法
Jul 31 Javascript
smartcrop.js智能图片裁剪库
Oct 14 Javascript
文件上传插件SWFUpload的使用指南
Nov 29 Javascript
详解JS数据类型的值拷贝函数(深拷贝)
Jul 13 Javascript
prototype.js简单实现ajax功能示例
Oct 18 Javascript
浅谈Emergence.js 检测元素可见性的 js 插件
Nov 18 Javascript
Node.js应用设置安全的沙箱环境
Apr 23 Javascript
layui弹出层按钮提交iframe表单的方法
Aug 20 Javascript
vue自定义树状结构图的实现方法
Oct 18 Javascript
js HTML5 Canvas绘制转盘抽奖
Sep 13 #Javascript
jQuery学习笔记之回调函数
Aug 15 #Javascript
纯css下拉菜单 无需js
Aug 15 #Javascript
浅谈JavaScript 中有关时间对象的方法
Aug 15 #Javascript
js轮盘抽奖实例分析
Apr 17 #Javascript
JavaScript 中有关数组对象的方法(详解)
Aug 15 #Javascript
onmouseover事件和onmouseout事件全面理解
Aug 15 #Javascript
You might like
支持oicq头像的留言簿(二)
2006/10/09 PHP
九个你必须知道而且又很好用的php函数和特点
2013/08/08 PHP
深入理解PHP中的global
2014/08/19 PHP
PHP之将POST数据转化为字符串的实现代码
2016/11/03 PHP
js字符编码函数区别分析
2008/06/05 Javascript
简单的两种Extjs formpanel加载数据的方式
2013/11/09 Javascript
在Javascript中处理数组之toSource()方法的使用
2015/06/09 Javascript
JQuery ztree 异步加载实例讲解
2016/02/25 Javascript
jQuery 选择同时包含两个class的元素的实现方法
2016/06/01 Javascript
BootStrap实现邮件列表的分页和模态框添加邮件的功能
2016/10/13 Javascript
原生js实现节日时间倒计时功能
2017/01/18 Javascript
详谈js中window.location.search的用法和作用
2017/02/13 Javascript
js 奇葩技巧之隐藏代码
2017/08/11 Javascript
使用vs code开发Nodejs程序的使用方法
2017/09/21 NodeJs
解析Vue 2.5的Diff算法
2017/11/28 Javascript
打通前后端构建一个Vue+Express的开发环境
2018/07/17 Javascript
React Native中ScrollView组件轮播图与ListView渲染列表组件用法实例分析
2020/01/06 Javascript
JS动态图片的实现方法完整示例
2020/01/13 Javascript
Python多线程下载文件的方法
2015/07/10 Python
Pycharm学习教程(5) Python快捷键相关设置
2017/05/03 Python
python数据结构之链表详解
2017/09/12 Python
Python开发虚拟环境使用virtualenvwrapper的搭建步骤教程图解
2018/09/19 Python
在python中只选取列表中某一纵列的方法
2018/11/28 Python
Python获取命令实时输出-原样彩色输出并返回输出结果的示例
2019/07/11 Python
postman传递当前时间戳实例详解
2019/09/14 Python
Python3将jpg转为pdf文件的方法示例
2019/12/13 Python
Python和Anaconda和Pycharm安装教程图文详解
2020/02/04 Python
小 200 行 Python 代码制作一个换脸程序
2020/05/12 Python
python修改微信和支付宝步数的示例代码
2020/10/12 Python
浅谈HTML5 defer和async的区别
2016/06/07 HTML / CSS
Reebok俄罗斯官方网上商店:购买锐步运动服装和鞋子
2016/09/26 全球购物
日本最大的购物网站乐天市场国际版:Rakuten Global Market(支持中文)
2020/02/03 全球购物
电脑租赁公司创业计划书
2014/01/08 职场文书
市优秀教师事迹材料
2014/02/05 职场文书
公司股东出资证明书
2014/11/01 职场文书
《雪域豹影》读后感:父爱的伟大
2019/12/23 职场文书