AJax技术

使用jQuery处理AJAX请求的基础学习教程

字号+ 作者:H5之家 来源:H5之家 2017-01-16 08:01 我要评论( )

$.ajax快捷方法 $.get(url,[data],[callback],[type])$.post(url,[data],[callback],[type]) 两种方法请求方式不同,其他方式相同. 参数:url[请求地址],data[请求的数据内容(obj对象)],callback[回调函数(只能处理请求成功事件)], type[请求返回数据的编

$.ajax快捷方法

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

两种方法请求方式不同,其他方式相同.
参数:url[请求地址],data[请求的数据内容(obj对象)],callback[回调函数(只能处理请求成功事件)],
type[请求返回数据的编码格式(默认ContentType指定格式)]

$.get('/test?x=1'); $.get('/test',{z:2}); $.post('/test',{y:2}); $.get('/user',function(data,callbacktype,jqXHR){ data//返回数据 callbacktype//返回数据的状态信息(字符串) jqXHR//jQuery封装的XHR对象 }); $(selector).load(url,[data],[callback])

将页面片段载入到selector的容器里面

$("#content").load('/user'); $.getJSON(url,[data],[callback])

如果是JSON数据回调会成功,否则失败

$.getJSON('/test',{type:1},function(){ console.log(argument) }); $.getScript(url,[claaback])

动态加载脚本文件

$.gerScript('/js/test.js',function(){ alert(test(1,2)); });

$.ajax详细使用方法

$.ajax(url,[settings]); $.ajax({ url:'/test', success:function(){ alert('ok'); } });

处理响应结果的回调函数:
success[成功],error[请求失败],
statusCode[指明返回的状态码的回调函数],
complete[请求返回前的回调函数(处理返回不同状态码的请求)]

$.ajax('/test',{ success:function(data){ console.log(arguments); }, error:function(jqXHR,textStatus,err){ //jqXHR:jQuery增强的XHR //textStatus:请求完成状态 //err:底层通过throw抛出的异常对象,类型与值与错误类型有关 console.log(arguments); }, complete:function(jqXHR,textStatus){ //jqXHR:jQuery增强的XHR //textStatus:请求完成状态success | error console.log(arguments); }, statusCode:function(){ '403':function(jqXHR,textStatus,err){ //jqXHR:jQuery增强的XHR //textStatus:请求完成状态 //err:底层通过throw抛出的异常对象,类型与值与错误类型有关 console.log(arguments); console.log(400); }, '400':function(){ console.log(400); } } });

请求的数据:data,processData,contentType,traditional

$.ajax('/test',{ //请求的数据内容 data:{ a:1, b:2 }, //请求的方式 type:'POST', //是否对请求的数据进行转码(用于传输数据为html节点内容) processData:true, //当前的数据是否使用传统方式进行url编码 traditional:true, //请求数据编码格式 contentType:'application/json' });

响应数据:dataType,dataFilter

$.ajax('/test',{ success:function(data){ console.log(typeof data) }, //定义的返回数据的类型 dataType:'json | html | text | jsonp | script', //返回底层的原始数据进行预处理 dataFilter:function(data,type){ //data:原始数据 //type:指定的数据类型 } });

前置处理:beforeSend

$.ajax('/test',{ beforeSend:function(jqXHR,settings){ console.log(arguments); jqXHR.setRequestHeader('test','haha'); jqXHR.testData = {a:1,b:2}; }, complete:function(jqXHR){ console.log(jqXHR.testData) } });

请求类型:GET(默认) | POST | PUT | DELETE
同步异步:async(默认true)
是否缓存:cache(默认true)
其他参数:
1.global[是否触发全局事件]
2.ifModifed[仅在服务器数据改变时候加载数据]
3.username,password[http需要验证时候]
4.timeout[设置请求超时时间,若请求超时触发error]
5.context[回调中this指向的对象]
其他相关的API

$.ajaxSetup(option)

设置全局默认参数

//默认为get请求 $.ajax('/test'); //修改全局请求方式为post $.ajaxSetup({ type:'post', headers:{ test:new Date().getTime }, cache:false }); //请求方式改变为post $.ajax('/test'); $.ajaxPrefilter([dataTypes],handler(option,originalOptions,jqXHR))

请求发起前的预处理,提供了一种AOP(面向切面)编程模式,常见用途:
1.根据option设定执行特定处理逻辑
2.修改option值改变请求默认行为
3.通过return修改默认dataType

例:通过return修改默认dataType

$.ajaxPrefilter('text html json',function(options,originalOptions,jqXHR){ //options请求参数,含默认值 //originalOptions请求时传入的参数,不含默认值 //jqXHR:jQuery增强的XHR console.log(arguments); if(options.url == '/test'){ return 'text'; } }); $.ajax('/test',{ type:'post', dataType:'text', //自定义属性 test:'haha' });

例:多次请求仅最后一次有效,避免多次请求导致的数据混乱

var requests = {}; $.ajaxPrefilter(function(options,originalOptions,jqXHR){ if(requests[options.url]){ requests[options.url].abort(); } requests[options.url] = jqXHR; }); $.ajax('/test/'); $.ajax('/test/');

例:统一修改请求路径

$.ajaxPrefilter(function(options){ if(options.url.substr(0,5) == '/usr'){ options.url = options.url.replace('/usr/','/user/'); options.header = { a:1 } } }); $.ajax('/usr/');

全局事件

jQuery-1.9以后,全局事件必须绑定在document上

$(document).ajaxSuccess(globalEventHander); $(document).ajaxError(globalEventHander); $(document).ajaxComplete(globalEventHander); $(document).ajaxStart(globalEventHander); $(document).ajaxStop(globalEventHander); $(document).ajaxSend(globalEventHander); function globalEventHander(event){ console.log(arguments); console.log(event.type); } $.ajax('/test?err=y');//请求成功 $.ajax('/test?err=n');//请求失败 //请求顺序: //ajaxStart >> ajaxSend >> ajaxSend >> ajaxSuccess >> ajaxComplete >> ajaxError >> ajaxComplete >> ajaxStop

序列化

1.param[序列化一个 key/value 对象]
2.serialize[通过序列化表单值,创建 URL 编码文本字符串]
3.serializeArray[通过序列化表单值来创建对象数组(名称和值)]

例:param()

var params = { a:1, b:2 }; var str = $.param(params); console.log(str); //a=1&b=2"

例:serialize()

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • Django与Ajax教程第三部分

    Django与Ajax教程第三部分

    2017-01-16 08:00

  • Django Ajax CSRF 认证

    Django Ajax CSRF 认证

    2017-01-15 18:14

  • Ajax学习总结(一)

    Ajax学习总结(一)

    2017-01-15 16:00

  • 请教–如何学习ajax

    请教–如何学习ajax

    2017-01-15 15:10

网友点评