这个JS函数应该怎么封装???

comeon_0003 2015-08-04 07:56:53
Ajax请求一:

$.ajax({
url: "/api/address/update",
type: "POST",
dataType: 'json',
data: "addressId="+addressId+"&name="+$('#person_editor').val()+"&telephone="+$('#telephone_editor').val()+"&phone="+$('#phone_editor').val()+"&postCode="+$('#postcode_editor').val()+"&area=&address="+$('#address_editor').val()+"&isDefault="+isDefault_editor+"&"+csrf_param+"="+csrf_token,
success: function (result) {
switch (result.ret) {
case 0:
location.reload();
break;
default:
showMessage(result.msg);
}
}, error: function () {
showMessage("服务器异常!");
}
});

Ajax请求二:
$('.addrlist li').click(function () {
$.ajax({
url: "/api/address/view",
type: "POST",
dataType: 'json',
data: "addressId="+this.id+"&"+csrf_param+"="+csrf_token,
success: function (result) {
switch (result.ret) {
case 0:
$('#person_editor').val("" + result.data.name + "");
$('#telephone_editor').val("" + result.data.telephone + "");
$('#phone_editor').val("" + result.data.phone + "");
$('#postcode_editor').val("" + result.data.postcode + "");
$('#address_editor').val("" + result.data.address + "");
if (result.data.isDefault == "Y")
{
window.isDefault = true;
$('#isDefault_editor').attr("class", "ischeck");
}
else
{
window.isDefault = false;
$('#isDefault_editor').attr("class", "nocheck");
}
break;
default:
showMessage(result.msg);
}
}, error: function () {
showMessage("服务器异常!");
}
});



Ajax请求三:
$.ajax({
url: "/api/user/register",
type: "POST",
dataType: "json",
data: "usrMp="+phoneNo+"&loginPwd="+password+"&smsCode"+erification+"&usrEmail"+emailAddr+"&"+csrf_param+"="+csrf_token,
success: function (result) {
if (result.ret != 0) {
showMessage(result.msg);
return false;
} else {
showMessage("注册成功,请到登录界面使用您的账号登录!");
setTimeout(function () {
window.location.href = "login";
}, 2000);
}
}, error: function () {
showMessage("服务器异常!");
return false;
}
});
return true;//ajax取消注释,这句需要取消
}

这样的Ajax请求怎样才能封装为通用的一个方法,放到Common.js里面,供其它js调用。 比如“register.js,login.js,order.js”等。

我的思路是:函数的参数是“url”、“data”、“dataType”、"type:"、"success”回调函数、“error回调函数“

有几个问题:
一、传入了那么多参数的话,感觉函数和没封装的时候没什么不同的??? 是不是应该将共同的参数写死,这样才好维护。

二、success:后面传入函数,函数应该有result参数,这个函数应该怎么写??? 这个函数应该写在页面对应的js里面吧。

三、“error”函数应该怎么写???

四:有木有大神帮忙封装下,怎么封装结构才比较好??? 现在有好多页面的JS脚本文件都会用到Ajax请求,为了方便维护和修改,应该怎么封装???

...全文
364 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
comeon_0003 2015-08-14
  • 打赏
  • 举报
回复
引用 3 楼 hch126163 的回复:
function ajax(url,data,callback){ $.ajax({ "url": url, type: "POST", dataType: "json", "data": data, success: function (result) { callback(result); }, error: function () { callback(0); } }); } } ajax("url","data",function(rs){});
callback(0)是根据参数0执行不同的方法对吗???
starrycheng 2015-08-14
  • 打赏
  • 举报
回复
引用 2 楼 xuzuning 的回复:
你设想的封装函数与 .ajax 并无本质的区别 只不过 .ajax 接受的是一个对象,而你的函数接受的是参数列表 所以并无再封装的必要 如果你只是想简化一下书写,那么可以直接使用 .post $.post(URL,data,callback)
ajax封装只是起到简写的作用。 如果有公共的函数方法封装在ajax中,那么封装就很有必要。
hch126163 2015-08-05
  • 打赏
  • 举报
回复
function ajax(url,data,callback){ $.ajax({ "url": url, type: "POST", dataType: "json", "data": data, success: function (result) { callback(result); }, error: function () { callback(0); } }); } } ajax("url","data",function(rs){});
xuzuning 2015-08-05
  • 打赏
  • 举报
回复
你设想的封装函数与 .ajax 并无本质的区别 只不过 .ajax 接受的是一个对象,而你的函数接受的是参数列表 所以并无再封装的必要 如果你只是想简化一下书写,那么可以直接使用 .post $.post(URL,data,callback)
似梦飞花 2015-08-04
  • 打赏
  • 举报
回复
函数的参数是“url”、“data”、“dataType”、"type:"、"success”回调函数、“error回调函数“ 这几个方法“dataType”、"type:"都一样 写死在方法里就好了 不用传 再有后端返回的数据格式最好一致 前端发送的也最好相似 容易封装 返回数据的逻辑可能不同 所以回调试试

87,838

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧