全局异步请求函数
全部接口参数
$ajax.post({
url:null,//请求地址
data : null,//请求数据
tip : false,//提交是否需要确认,true或string需要确认
jsonData : false,//是否采用jsonData格式提交
sync : false,//是否同步方式提交
jsonp : false,//默认非jsonp格式
type : 'post',//采用post方式提交
loadingBar : true,//loading进度条
loadingMask : true,//进行异步请求中,是否显示mask
calltip : true,//提交成功后显示请求成功信息
success : function(rst){},//请求成功后,code===200或者201返回事件
callback : function(rst){},//请求成功后返回事件
cancelback : function(){},//确认框点取消返回事件
errback : function(req, textStatus, errorThrown){}//出现错误时返回事件
});
说明
$ajax.post 二次封装了异步请求,主要加入了以下交互:
- 请求时会有一个加载等待显示
- 请求成功会返回成功提示,可自定义提示信息
- 失败会弹窗提示失败原因,可自定义提示信息(除请求失败)
- 可选择提示确认后再请求
- 默认发送formData到后台,可以选择发送json格式 (
jsonData: true
) - 确定是否是同步请求
注意
所有异步请求方法做全局拦截,返回状态码 500
或者 返回json { code: '500',msg: '错误提示信息!' }
都会全局拦截认为是报错。
简易模式
// url : 请求地址
// data : 请求数据
// tip : 布尔值或字符串,是否提示确认后再发起请求
// isJsonData : 是否是json格式(默认是formData)
// sync : 是否是同步请求(默认异步)
// callTip : 补丁参数,提示确认时是否需要返回提示,为true不提示
$ajax.post(url, data, tip, isJsonData,sync,callTip).done(function(rst){
//
});
自由模式
// url : 请求地址
// data : 请求数据
// tip : 布尔值或字符串,是否提示确认后再发起请求
// isJsonData : 是否是json格式(默认是formData)
// sync : 是否是同步请求(默认异步)
// callTip : 补丁参数,提示确认时是否需要返回提示,为true不提示
$ajax.post(url, data,{jsonData:true,tip:'您是否提交吗?',loadingMask:false,success:function(rst){
//返回处理
}});
$ajax.post(url, data,{jsonData:true,tip:false}).done(function(rst){
//返回处理
});
衍生的同步模式
$ajax.postSync(url, data, tip, isJsonData).done(function(rst){//同步模式
//返回处理
});
请求的标准返回
和后端约定,除数据表格及特殊的组件外,采用标准格式返回请求如下:
//请求成功示例:
{
"code":'200',//200表示请求成功,注意这里是字符串非数字,并使用前台默认提示,201表示请求成功用后台自定义提示
"msg":"",//200的请求使用的提示信息
"ohter":"other"//其余属性
}
//请求失败示例:
{
"code": '500',//业务失败
"msg":"对不起您没有操作权限!"//自定义提示
"ohter":"other"//其余属性
}
全部代码示例
//完整版
$ajax.post({
url : '/op.jhtm',
data : { id: hospitalid },
jsonData: true,//采用json方式发送数据,默认是formData
tip : '是否确认此操作?',
success : function(rst){
//success里是code === '200' 或者 '201'才执行的事件,如果使用非标json结构请使用 callback方法
console.log(rst);
},
cancelback : function(){//确认框点取消返回事件
console.log('点击了取消按钮');
},
errback: function(req, textStatus, errorThrown){
console.log(req);
}
});
//简易版
$ajax.post('/delete.jhtml',{ id: hospitalid },'是否确认删除选择的记录?').done(function (rst) {
if(rst.code==='200'){
...
}else{
layer.msg('您不是该医院筹备负责人,不能操作该医院!', {icon: 0});//提示框提示
}
});
//发送json数据,第一个true表示需要提示确认,第二个true表示是发送复杂json到后台,第三个true表示是一个同步请求
$ajax.post('json/true.js',JSON.stringify(changetData),true,true,true).done(function (rst) {
//JSON.stringify()这个括号可以不写
if (rst.code==='200'||rst.code==='201') {
$grid.datagrid('reload');
};
});
//没有数据,有提示信息
$ajax.post('/update.jhtml',null,'是否提交此操作?').done(function (rst) {
...
});
//只有请求地址
$ajax.post('/url.jhtml').done(function (rst) {
...
});
//同步请求
$ajax.postSync('/url.jhtml').done(function (rst) {
...
});