全局ajax怎么写,jQuery进阶实践之利用最优雅的方式如何写ajax请求

前言

jQuery确实是一个挺好的轻量级的JS框架,能帮助我们快速的开发JS应用,并在一定程度上改变了我们写JavaScript代码的习惯。

废话少说,直接进入正题,jQuery的ajax方法非常好用,这么好的东西,你想拥有一个属于自己的ajax么?接下来,我们来自己做一个简单的ajax吧。

首先需要一个配置文件

var api = {

basePath: 'http://192.168.200.226:58080',

pathList: [

{

name: 'agentHeartBeat',

path:'/api/csta/agent/heartbeat/{{agentId}}',

method:'post'

},

{

name: 'setAgentState',

path: '/api/csta/agent/state',

method: 'post'

},

{

name: 'getAgents',

path: '/user/agent/{{query}}',

method: 'get'

}

]

}

然后需要一个方法,把配置文件生成接口

function WellApi(Config){

var headers = {};

var Api = function(){};

Api.pt = Api.prototype;

var util = {

ajax: function(url, method, payload) {

return $.ajax({

url: url,

type: method || "get",

data: JSON.stringify(payload),

headers: headers,

dataType: "json",

contentType: 'application/json; charset=UTF-8'

});

},

/**

* [render 模板渲染]

* 主要用于将 /users/{{userId}} 和{userId: '89898'}转换成/users/89898,和mastache语法差不多,

* 当然我们没必要为了这么小的一个功能来引入一个模板库

* query字符串可以当做一个参数传递进来

* 例如: /users/{{query}}和{query:'?name=jisika&sex=1'}

* @Author Wdd

* @DateTime 2017-03-13T19:42:58+0800

* @param {[type]} tpl [description]

* @param {[type]} data [description]

* @return {[type]} [description]

*/

render: function(tpl, data){

var re = /{{([^}]+)?}}/;

var match = '';

while(match = re.exec(tpl)){

tpl = tpl.replace(match[0],data[match[1]]);

}

return tpl;

}

};

/**

* [setHeader 暴露设置头部信息的方法]

* 有些方法需要特定的头部信息,例如登录之后才能获取sesssionId,然后访问所有的接口时,必须携带sessionId

* 才可以访问

* @Author Wdd

* @DateTime 2017-03-13T10:34:03+0800

* @param {[type]} headers [description]

*/

Api.pt.setHeader = function(headers){

headers = headers;

};

/**

* [fire 发送ajax请求,this会绑定到每个接口上]

* @Author Wdd

* @DateTime 2017-03-13T19:42:13+0800

* @param {[type]} pathParm [description]

* @param {[type]} payload [description]

* @return {[type]} [description]

*/

function fire(pathParm, payload){

var url = util.render(this.path, pathParm);

return util.ajax(url, this.method, payload);

}

/**

* [for 遍历所有接口]

* @Author Wdd

* @DateTime 2017-03-13T19:49:33+0800

* @param {[type]} var i [description]

* @return {[type]} [description]

*/

for(var i=0; i < Config.pathList.length; i++){

Api.pt[Config.pathList[i].name] = {

path: Config.basePath + Config.pathList[i].path,

method: Config.pathList[i].method,

fire: fire

};

}

return new Api();

}

试用一下

var saas = WellApi(api);

saas.agentHeartBeat.fire({agentId: '5001@1011.cc'})

.done(function(res){

console.log('心跳成功');

})

.fail(function(res){

console.log('心跳失败');

});

优点与扩展

[优点]:类似与promise的回调方式

[优点]:增加一个接口只是需要增加一个配置文件,很方便

[扩展]:当前的ajax 的contentType我只写了json,有兴趣可以扩展其他的数据类型

[缺点]:没有对函数参数进行校验

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

1. 用户与身体信息管理模块 用户信息管理: 注册登录:支持手机号 / 邮箱注册,密码加密存储,提供第三方快捷登录(模拟) 个人资料:记录基本信息(姓名、年龄、性别、身高、体重、职业) 健康目标:用户设置目标(如 “减重 5kg”“增肌”“维持健康”)及期望周期 身体状态跟踪: 体重记录:定期录入体重数据,生成体重变化曲线(折线图) 身体指标:记录 BMI(自动计算)、体脂率(可选)、基础代谢率(根据身高体重估算) 健康状况:用户可填特殊情况(如糖尿病、过敏食物、素食偏好),系统据此调整推荐 2. 膳食记录与食物数据库模块 食物数据库: 基础信息:包含常见食物(如米饭、鸡蛋、牛肉)的名称、类别(主食 / 肉类 / 蔬菜等)、每份重量 营养成分:记录每 100g 食物的热量(kcal)、蛋白质、脂肪、碳水化合物、维生素、矿物质含量 数据库维护:管理员可添加新食物、更新营养数据,支持按名称 / 类别检索 膳食记录功能: 快速记录:用户选择食物、输入食用量(克 / 份),系统自动计算摄入的营养成分 餐次分类:按早餐 / 午餐 / 晚餐 / 加餐分类记录,支持上传餐食照片(可选) 批量操作:提供常见套餐模板(如 “三明治 + 牛奶”),一键添加到记录 历史记录:按日期查看过往膳食记录,支持编辑 / 删除错误记录 3. 营养分析模块 每日营养摄入分析: 核心指标计算:统计当日摄入的总热量、蛋白质 / 脂肪 / 碳水化合物占比(按每日推荐量对比) 微量营养素分析:检查维生素(如维生素 C、钙、铁)的摄入是否达标 平衡评估:生成 “营养平衡度” 评分(0-100 分),指出摄入过剩或不足的营养素 趋势分析: 周 / 月营养趋势:用折线图展示近 7 天 / 30 天的热量、三大营养素摄入变化 对比分析:将实际摄入与推荐量对比(如 “蛋白质摄入仅达到推荐量的 70%”) 目标达成率:针对健
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值