Jquery中$.get(),$.post(),$.ajax(),$.getJSON()的用法总结 |
||||||||||||||||||||||||||||||||||||||||||||||||
本文标签:Jquery,ajax,post 详细解读Jquery各Ajax函数: 一,$.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, ); When Ajax meets jQuery 基于AJAX的应用现在越来越多,而对于前台开发人员来说,直接和底层的HTTPRequest打交道又不是一件令人愉快的事情 。jQuery既然封装了 JavaScript,肯定已经考虑过AJAX应用的问题 。的确,如果用jQuery写AJAX会比直接用JS写方便N倍 。(不知道用jQuery长了, 会不会丧失对JS的知识了……) 这里假设大家对jQuery语法已经比较熟悉,来对ajax的一些应用作一些总结 。 载入静态页面 load( url, [data], [callback] ); 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] ) 很显然这是一个专门实现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地址. 同样是jQuery提供的一个简便函数,其实用法 复制代码 代码如下: $.post(regsiter.php, { id:Robin, password: 123456, type:user },function(data, status) { alert(data); }, "json"); 事件驱动的脚本载入函数:getScript() getScript( url, [callback] ) getScript()函数可以远程载入JavaScript脚本并且执行 。这个函数可以跨 域载入JS文件(神奇……?!) 。这个函数的意义是巨大 的,它可以很大程度的缩减页面初次载入的代码量,因为你可以根据用户的交互来载入相应的JS文件,而不必在页面初始化的时候全部载入 。 复制代码 代码如下: $.getScript(ajaxEvent.js, function() { alert("Scripts Loaded!"); //载入ajaxEvent.js,并且在成功载入后显示对话框提示 。 }); 构建数据通讯的桥梁:getJSON() getJSON(url,[data],[callback]) 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 )
你可以指定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 复制代码 代码如下: $("#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() 复制代码 代码如下: $("input[name=info]:text").val(); //返回名字为info的文本框的值 $("input[name=pass]:password").val(); //返回名字为pass的密码框的值 $("input[name=save]:radio").val(); //返回名字为save的单选项的值 //以此类推 serialize() serialize函数可以帮你把表单对象的所有值都转换为字符串序列 。如果你要写GET格式的请求,这个就非常方便了 。 |