您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

jQuery与Ajax以及序列化_jquery

2025/7/3 19:24:32发布24次查看
关于ajax
所谓ajax,全名asynchronous javascript and xml。(也就异步的js和xml)
简单点来讲就是不刷新页面来发送和获取数据,然后更新页面。
ajax的优势
•无需插件支持
•优秀的用户体验
•提高web程序的性能
•减轻服务器和带宽的负担
ajax的不足
•浏览器兼容不足
•破坏浏览器前进和后退按钮的正常功能
•对搜索引擎的支持不足
•开发和调试工具的 缺乏
好吧,这些都是几年前的不足。技术的发展很快,这些不足也会慢慢弥补,起码现在调试ajax并不难。
ajax的核心是xmlhttprequest对象,它是ajax实现的关键。
传统的实现ajax的例子就不举了,太蛋疼了,我都没记,网上一搜一大堆。
关于jquery中的ajax
$.ajax()方法是封装了最原始的js的ajax方式。
load(),$.get(),$.post()是封装了$.ajax()得来
$.getscript()和$.getjson()是进一步的封装。
•load()方法 •用处:载入远程html代码并插入dom中,通常用于获取静态的数据文件,结构为:load(url [,data] [,callback])。 •url为请求的地址
•data可选,为发动到服务器的参数对象
•callback为回调函数,请求不论成功还是失败都调用
•载入页面的时候甚至可以在地址里加上筛选
$(#resdiv).load(test.html .myclass);//这个div里只载入test.html页面里面 样式为myclass 的元素//举一个完整的例子$(function(){$(#resdiv).load(text.php,{name:troy,textinfo:hello},function(responsetext,textstatus,xmlhttprequest){//responsetext:请求返回的内容//textstatus: 请求状态:success、error、notmodiffied、timeout 4种 //xmlhttprequest: xmlhttprequest对象});});
•$.get()方法 •明显的看到调用的方式不同,所以说这函数是jquery的全局函数。而此前的方法和load()这种都是对jquery对象进行操作
•$.get()方法使用get方式来进行异步请求,结构为:$.get(url [,data] [,callback] [,type]) •前三个参数就不说了,唯一不同的是callback只有请求成功才调用
•type参数为服务器端返回内容的格式,包括xml,html,script,json,text和_default
•例子
$(#send).click(function()$.get(get1.php,{username:$(#username).val(),content:$(#content).val()},function(data,textstatus){//data: 返回的内容,可以是xml文档、json文件、html片段//textstatus: 请求状态:success、error、notmodiffied、timeout 4种})})
•$.post()方法 •它与get方法的玩法一样,不过一个是get方式,一个是post方式。
•$.getscript()方法 •有的时候页面初次加载没必要获取所有的脚本,所以jquery提供了getscript这种方法来直接加载js文件。
•例子
$('#send').click(function(){$.getscript('test.js',function(){//do something 这个时候脚本已经加载了,不需要再对js文件进行处理});});
• $.getjson()方法 •用于加载json文件,用法同上,只不过返回的json数据而已
$('#send').click(function(){$.getjson(myurl,function(data){var html=;$.each(data,function(commentindex,comment){html+=commentindex+:+comment['username']+;;})alert(html);})});//注意一下ecch这种玩法,同样是个全局函数。他的回调函数中,第一个参数为成员的索引,第二个为变量和内容
顺便扩展一下,跨域访问的jsonp
$(#send).click(function(){$.getjson(http://www.某网站.com/services/getmycmpjson?tags=car&tagmode=any&format=json&jsoncall back=?,function(data){//某些操作})})
//jsonp是个非官方协议,采用json与标记结合的方式,主要用于web应用程序跨域
•$.ajax()方法 •这个方法是jquery最底层的ajax实现,所以理所当然更加强大以及复杂。
虽然它只有一个参数,但是这个参数对象包含的属性非常多,不过都是可选的。以下列出所有属性: • url:默认当前页地址,也可以手动写请求的地址
•type:默认为get,也可以写post
•timeout:设置请求超时时间(毫秒)
•data:发送的数据
•datatype:预期服务器返回的数据类型。
•beforesend:发送前的调用的函数,如果次函数返回false将取消本次ajax请求。
function(xmlhttprequest){//xmlhttprequest是唯一的参数this;//调用本次ajax请求时传递的options参数}
•complete:请求完后,无论成功还是失败都调用。
function(xmlhttprequest,textstatus){//textstatus描述成功请求类型this;//调用本次ajax请求时传递的options参数}
•success:请求成功后的回调函数
function(data,textstatus){//data为成功返回的数据this;//调用本次ajax请求时传递的options参数}
•error:请求失败调用的函数
function(xmlhttprequest,textstatus,errorthrown){// textstatus为错误信息,errorthrown为捕获的错误对象,通常只有其中一个包含信息this;//调用本次ajax请求时传递的options参数}
•global:默认为true。表示是否触发全局ajax事件。
•序列化元素 •serialize()方法 •它能够将dom元素内容序列化为字符串
//不仅可以序列化整个表单,也可以序列化单个元素,并且都是自动编码过的$.post(myurl,$(#form1).serialize(),function(data,textstatus){$(#restext).html(data);})
•serializearray()方法 •它能够将dom元素内容序列化为json格式
•$.param()方法 •这是serialize方法的核心,用来对一个数组或对象按照键值对进行序列化
var obj={a:1,b:2,c:3};var k=$.param(obj);//输出为a=1&b=2&c=3
•jquery中的ajax全局事件 •ajaxstart()方法:当ajax请求开始就触发
•ajaxstop()方法:当ajax请求结束就触发
加载中...
$(#loading).ajaxstart(function(){$(this).show();//ajax开始请求就显示加载中});$(#loading).ajaxstop(function(){$(this).hide();//ajax开始结束就隐藏加载中});
•ajaxcomplete():当ajax请求完成就触发
•ajaxerror():当ajax请求发生就触发,捕捉到的错误可以作为最后一个参数传递
•ajaxsend():当ajax请求发送前就触发
•ajaxsuccess():当ajax请求成功就触发
•如果想使某个ajax请求不受全局事件的影响,可以在$.ajax中将global属性设置为false,这个在前面已经讲过了。当然也可以在ajax请求前:
$.ajaxprefilter(function(options){//每次发送前请求options.global=true;})
好吧,写完了。最后顺带提一下,settimeout(domethod(),4000);为4s后执行domethod这个函数。
//一个简单的定时发送功能function updatemsg(){$.post(myurl,{time:timestamp},function(xml){//do something});settimeout(updatemsg(),4000);}
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product