关于jquery中ajax请求的深入了解,deferred可能是jquery中1.5版本以后最重要的方法,你真的理解了吗!
http://www.ruanyifeng.com/blog/2011/08/a_detailed_explanation_of_jquery_deferred_object.html
自己试着封装的ajax
直接上马:
html:
<button id="btn" οnclick="ajaxBtn(this)"></button>
js代码:
/*
* @obj 事件对象
* @url必填
* @data,type,async beforeSend有默认值
* @beforeSend ajax发送之前的状态事件;
* @ajax 形成promise对象
* @then 成功与失败的函数
* */
jQuery.extend({
ajaxCode:function (url,data,type,async) {
var dtd = $.Deferred();
$.ajax({
url:url,
data:data || {},
type: type || 'GET',
cache: 'false',
dataType:dataType || 'json',
async:async || 'true',
success: dtd.resolve,
error: dtd.reject,
});
return dtd.promise();
},
ajaxCode2:function (url,data,type,async) {
var dtd = $.Deferred();
$.ajax({
url:url,
data:data || {},
type: type || 'GET',
cache: 'false',
dataType:dataType || 'json',
async:async || 'true'
}).then(function(data){
dtd.resolve(data);
}, function(){
toastr.error("提交失败", "操作失败");
dtd.reject();
});
return dtd.promise();
},
});
function ajaxBtn (obj) {
var obj = arguments[0] ;
$.ajaxCode(obj,url,data,type,async,beforeSend).then(function(data){},function(data){})
};