jquery-ajax
load:直接加载$("xx").load(url,function(data){//回调函数}), 可在一个文件中加载另一个文件,如果返回的是html内容,jquery将html中的body元素内容的所有根节点放到包裝集中,如需查找根元素则需使用filter()函数,如需查找子元素使用find()函数。
post,get,ajax,serialize...
- deferred对象
- promise:jquery1.5之后,调用ajax()方法后返回一个promise对象,这个对象
var promise = $.ajax(url...);
promise.done(function(data){//done表示成功之后
}).fail(function(data){ })//fail表示失败之后
也可使用then(function(){//成功},function(){//失败})
使用var promise = when($.ajax(){},$.ajax(){}//两个方法)
promise.done(function(data1,data2){}).fail(function(data1,data2){})//data1,data2分别表示两ajax方法的返回值
在函数内部可定义Deferred对象
$(function(){
function wait(){
var def = $.Deferred();
setTimeout(function(){
alert("invoke");
//def.resolve("aa");//成功
def.rejectWith($("xx"),["bb"]);//执行失败,第一个参数为上下文环境
},1000);
return def.promise()
}
wait().done(function(data1){//data1为aa即resolve传过来的值}).fail(function(data2){//如果使用this则表示$("xx")对象,data2为bb});
})
以上代码可实现加载成功和失败的效果
2.pipe
$("xx").promise()
.pipe(fn//此函数的返回值传递到下一个pipe中函数,如果是返回错误则返回Deferred对象
//即使用var def = $.Deferred();def.reject("xx");return def;当某个pipe返回错误时,此后的pipe都默认返回错误的值并在fail函数中处理
)
.pipe(fn2//返回值相信传递)
...//多个pipe函数
.done(fn3//成功)
.fail(fn4//错误);
使用pipe可实现ajax方法的链式编程