前言:通常情况下,在不使用angularJS/nodeJS/react等这类完整性的解决方案的js时,前端与后台的异步交互都是使用Ajax技术进行解决

一:作为java web开发工程师可能以下代码是刚开始的阶段最普遍的写法

 $.ajax({
cache: false,
type: 'GET',
url: this.rootUrl + '?' + $.param(param),
dataType: "json",
success: function(data){ },
error: function(){ }
});

如果业务系统稍微复杂,CRUD比较多的看情况下,项目中会出现过多的类似代码,维护起来相当麻烦,样板式的代码过多,不利于代码的可读性。

二:对于这种后台异步交互的访问代码,我们可以通过对业务数据访问的代码封装来进行。

function Service(url) {
this.rootUrl = url; this.errorHandler = function (jqXHR) {
var response = jqXHR.responseJSON;
if (response != null) {
if (!response.success && response.errCode === MSG_SERVER_RESPONSE_NO_USER) {
$(".close").click();
window.location.href = "index.html";
} else {
if (response.msg != null) {
Dialog.showMsg("错误代码:" + response.errCode + ",信息:" + response.msg); } else {
Dialog.showAlert("错误代码:" + response.errCode + ",信息:服务器异常");
}
}
} else {
Dialog.showAlert("服务器异常");
}
}; }
Service.prototype = { constructor: Service,
//find
getAll: function (param, callback) {
$.ajax({
cache: false,
type: 'GET',
url: this.rootUrl + '?' + $.param(param),
dataType: "json",
success: callback,
error: this.errorHandler
});
}, //find
getAllAsync: function (param, callback) {
$.ajax({
cache: false,
type: 'GET',
url: this.rootUrl + '?' + $.param(param),
dataType: "json",
success: callback,
async: false,
error: this.errorHandler
});
}, //find data by id
getById: function (id, data, callback) {
if (typeof data === "function") {
callback = data;
data = null;
}
$.ajax({
cache: false,
type: 'GET',
url: this.rootUrl + '/' + id,
data: data,
dataType: "json",
success: callback,
error: this.errorHandler
});
}
};

  这样封装以后,我们就可以通过对象的方式来获取后端业务数据。这也是前端面向对象的处理方式。例如:

    var entService = new Service("../service/ba/enterprise");
var userData = {
"id": currentEnt.id
};
var successCallback = function (data) {
resoleEntViewAll(data.data);
};
var errorCallBack = function () {
return null;
};
entService.getById(userData.id, userData, successCallback);

  首先,通过new 一个自定义的Service,请求参数与正确返回的函数、错误返回的函数通过参数传递,在此处,我的所有错误处理方法都是调用同一个通用的错误处理函数。正确返回的回调函数,由于业务不同,在调用时分别指定,此处我的错误处理回调函数中使用了BootstrapDialog插件封装的自定义的错误弹框Dialog对象来进行前段错误提示。

web前端与后台数据访问的对象封装的更多相关文章

  1. web前端与后台数据交互

    1.前端请求数据URL由谁来写? 在开发中,URL主要是由后台来写的,写好了给前端开发者.如果后台在查询数据,需要借助查询条件才能查询到前端需要的数据时,这时后台会要求前端提供相关的查询参数,这里的查 ...

  2. js前端对后台数据的获取,如果是汉字则需要添上引号

    js前端对后台数据的获取,如果是汉字则需要添上引号

  3. 职业定位(Web前端、后台、PC端)

    Web前端 Web前端开发工程师:http://baike.sogou.com/v18499271.htm WEB前端开发面试题集锦:http://wenku.baidu.com/view/47bbc ...

  4. Java Web前端到后台常用框架介绍

    一.SpringMVC http://blog.csdn.net/evankaka/article/details/45501811 Spring Web MVC是一种基于Java的实现了Web MV ...

  5. ASP.NET 一个数据访问层的封装

    刚通过开通写博客的申请,向博客园的大佬致敬,由于一直以来都在网上搜索大家的思想,也有翻遍整个百度都有的找不到的时候,作为一个网民理应为互联网贡献一点东西. 下面是我工作后受一个师傅的影响对数据库访问层 ...

  6. 【从0到1学Web前端】javascript中的ajax对象(一) 分类: JavaScript 2015-06-24 10:18 754人阅读 评论(1) 收藏

    现在最流行的获取后端的(浏览器从服务器)数据的方式就是通过Ajax了吧.今天就来详细的来学习下这个知识吧.如果使用ajax来访问后段的数据,浏览器和浏览器端的js做了那些工作呢?我做了一个图,请大家看 ...

  7. Django学习手册 - 模板语言(前端获取后台数据)

    先在views视图内,定义列表数据,以及字典数据.运用render函数传递两个列表数据至前端. from django.shortcuts import render list_info = [ {& ...

  8. sj 网页前端与后台数据交互的3种方式

    1.ajax  网页访问 2.form 表单 用户名<input class="yonghu" type="text" id="user&quo ...

  9. DDD领域模型数据访问之对象(十一)

    在工程DDD.Domain中文件夹ModelPermission新建类:BAS_Object public partial class BAS_Obejct:AggreateRoot { //仓储接口 ...

随机推荐

  1. WinForm中自定义搜索框(水印、清空按钮、加载中图标)

    public partial class CustomSearchBar : TextBox { private readonly Label lblwaterText = new Label(); ...

  2. PHP删除目录

    function delDir($directory) { if(file_exists($directory)) { $dir_handle = @opendir($directory); if($ ...

  3. VM12安装Mac系统操作指南

    1.第一步,操作按照这个链接来搞 VMware 12安装Mac OS 系统使用的是 OS X 10.11.1(15B42) 2.激活工具一定要使用 unlocker208 3.初次安装可能存在的报错 ...

  4. 「BZOJ 1876」「SDOI 2009」SuperGCD「数论」

    题意 求\(\gcd(a, b)\),其中\(a,b\leq10^{10000}\) 题解 使用\(\text{Stein}\)算法,其原理是不断筛除因子\(2\)然后使用更相减损法 如果不筛\(2\ ...

  5. 用Python写一个随机密码生成器

    # /bin/python3 import sys import time import random strs = [ i for i in range(32,128) ] #产生密码的ASCII码 ...

  6. 洛谷P4011 孤岛营救问题(状压+BFS)

    传送门 和网络流有半毛钱关系么…… 可以发现$n,m,p$都特别小,那么考虑状压,每一个状态表示位置以及钥匙的拥有情况,然后每次因为只能走一步,所以可以用bfs求出最优解 然后是某大佬说的注意点:每个 ...

  7. Mysql的用户基本操作

    创建用户: mysql> create user 'cai'@'localhost' identified by '123456'; Query OK, 0 rows affected (0.0 ...

  8. loj2289 [THUWC 2017]在美妙的数学王国中畅游(LCT+Taylor展开)

    link 题目大意: 你需要维护一个树 每个点都有个sin(ax+b)或exp(ax+b)或ax+b 你需要维护一些操作:连边.删边.修改某个点的初等函数.询问某条树链上所有函数带入某个值后权值和或不 ...

  9. string[] 转换为 int[]

    string[] ke=...... int[] output = Array.ConvertAll<string, int>(ke,delegate (string s) { retur ...

  10. 《Andrew Ng深度学习》笔记5

    深层神经网络 深层神经网络的组成如图,这里主要是深层神经网络符号的定义. 为什么要用深层神经网络,有什么好处?这里主要是分层的思想.在软件工程中,如果问题遇到困难,一般是通过“加多”一层的方法来解决, ...