$.ajax快捷方法
rush:js;">
$.get(url,[data],[callback],[type])
$.post(url,[type])
两种方法请求方式不同,其他方式相同.
参数:url[请求地址],data[请求的数据内容(obj对象)],callback[回调函数(只能处理请求成功事件)],
type[请求返回数据的编码格式(默认ContentType指定格式)]
rush:js;">
$.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,[callback])
将页面片段载入到selector的容器里面
rush:js;">
$("#content").load('/user');
$.getJSON(url,[callback])
如果是JSON数据回调会成功,否则失败
rush:js;">
$.getJSON('/test',{type:1},function(){
console.log(argument)
});
$.getScript(url,[claaback])
动态加载脚本文件
rush:js;">
$.gerScript('/js/test.js',function(){
alert(test(1,2));
});
$.ajax详细使用方法
rush:js;">
$.ajax(url,[settings]);
$.ajax({
url:'/test',success:function(){
alert('ok');
}
});
处理响应结果的回调函数:
success[成功],error[请求失败],
statusCode[指明返回的状态码的回调函数],
complete[请求返回前的回调函数(处理返回不同状态码的请求)]
rush:js;">
$.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,err){
//jqXHR:jQuery增强的XHR
//textStatus:请求完成状态
//err:底层通过throw抛出的异常对象,类型与值与
错误类型有关
console.log(arguments);
console.log(400);
},'400':function(){
console.log(400);
}
}
});
请求的数据:data,processData,contentType,Traditional
rush:js;">
$.ajax('/test',{
//请求的数据
内容
data:{
a:1,b:2
},//请求的方式
type:'POST',//是否对请求的数据进行转码(用于传输数据为html节点
内容)
processData:true,//当前的数据是否使用传统方式进行url编码
Traditional:true,//请求数据编码格式
contentType:'application/json'
});
响应数据:dataType,dataFilter
rush:js;">
$.ajax('/test',{
success:function(data){
console.log(typeof data)
},//定义的返回数据的类型
dataType:'json | html | text | jsonp | script',//返回底层的原始数据进行预处理
dataFilter:function(data,type){
//data:原始数据
//type:指定的数据类型
}
});
前置处理:beforeSend
rush:js;">
$.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)
设置全局默认参数
rush:js;">
//
默认为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
rush:js;">
$.ajaxPrefilter('text html json',function(options,jqXHR){
//options请求参数,含
默认值
//originalOptions请求时传入的参数,不含
默认值
//jqXHR:jQuery增强的XHR
console.log(arguments);
if(options.url == '/test'){
return 'text';
}
});
$.ajax('/test',{
type:'post',dataType:'text',//自定义属性
test:'haha'
});
例:多次请求仅最后一次有效,避免多次请求导致的数据混乱
rush:js;">
var requests = {};
$.ajaxPrefilter(function(options,jqXHR){
if(requests[options.url]){
requests[options.url].abort();
}
requests[options.url] = jqXHR;
});
$.ajax('/test/');
$.ajax('/test/');
例:统一修改请求路径
rush:js;">
$.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上
> ajaxSend >> ajaxSend >> ajaxSuccess >> ajaxComplete >> ajaxError >> ajaxComplete >> ajaxStop
序列化
1.param[序列化一个 key/value 对象]
2.serialize[通过序列化表单值,创建 URL 编码文本字符串]
3.serializeArray[通过序列化表单值来创建对象数组(名称和值)]
例:param()
rush:js;">
var p
arams = { a:1,b:2 };
var str = $.p
aram(p
arams);
console.log(str);
//a=1&b=2"
例:serialize()