前台JS模块设计

 
 
前台JS模块设计
前台JS模块主要完成向后台请求提示数据,绘制提示框并控制用户操作提示框时各鼠标和键盘事件。共包括二个子模块MyXmlHttp与SmartInput。MyXmlHttp主要封装了XMLHttpRequest,它屏蔽了各浏览器之间的差别,提供给用户简单的接口完成数据的异步请求;SmartInput则完成了提示数据的显示与控制。
用户只需提供请求后台功能的URL,参数及请求成功后需执行的回调函数。异步请求数据接口就可以自动完成新建与浏览器相适应的XMLHttpRequest对象,发送请求,错误判断及执行回调函数。
附:对于SmartInput模块,如果将它所依附的输入框算为内部成员的话,那以它就没有向外提供接口,因为它本身是通过事件触发的。
本模块通过封装XMLHttpRequest对象来异步请求数据,后台 à前台的数据交换采用XML。将需提示的输入框与提示信息的请求、显示与控制封装在一起。
后台的数据格式一定要与前台的解析格式是一致的。后台返回前台的XML格式为:
<xml>
 <error>
     <code>
     </code>
     <desc>
     </desc> 
 </error>
 <results>
 [[total_num],[[id,name,pym,wbm,qtm],[id,name,pym,wbm,qtm].......]]
 </results>
</xml>
模块与所在页面的生命周期相同。
单元名称
单元描述
MyXmlHttp
异常请求数据
SmartInput
录入信息提示功能
 
附:对于SmartInput只建模了关键方法。
1.6.3时序/交互图
1.6.4    单元设计
1.6.4.1    MyXmlHttp
本单元主要是利用XMLHttpRequest对象,异步地调用后台程序功能。它屏蔽了浏览器创建XMLHttpRequest对象的差异、封装了请求的发送及请求结果信息的判断等功能。
1.6.4.1.2      单元设计描述
//需要全局变量is_ie, is_ie5
方法原型
callMethod
类型
API
callMethod (callBackMethod, params, listener, execHint,ServerFuncURL,attempts, server,method)
功能说明
异常请求数据
调用关系
无限制
输入参数
参数名
参数类型
参数描述
callBackMethod
String
回调函数名
params
Object
参数
listener
Object
回调函数所在的对象
execHint
Object
功能执行期间提示信息的显示
ServerFuncURL
String
后台功能所在相对地址
server
String
机器地址
method
String
POST/GET请求
输出参数
参数名
参数类型
参数描述
 
 
 
返回值
 
备注
 
方法的内部逻辑:
//以下是方法的伪代码:
MyXmlHttp.callMethod = function(callBackMethod, params, listener, execHint,ServerFuncURL, attempts, server,method) {
  //方法执行的必要参数判定;
   // 将params内的参数解析如name=value&…形式的字符串;
   //server+ ServerFuncURL求出后台功能的完整url
   //创建XmlHttpRequest对象;
   var req = this. XmlHttpCreate();
   //回调函数;
var callback = function(){
    If (4 == req.readyState){
   If (200 == req.status){
   //执行MyXmlHttp.handleResponse(..)
}else{//重试attempt次
 //执行MyXmlHttp.callMethod
}
}
}
   If (method = = “GET”)
      //send get request; this.XmlHttpGET (xmlhttp, url, data, handler)
   Else //send post request; this.XmlHttpPOST (xmlhttp, url, data, handler)
}
1.6.4.1.2.3   单元对内方法集
 
方法原型
XmlHttpCreate
类型
API
XmlHttpCreate()
功能说明
创建XMLHttpRequest对象
调用关系
无限制
输入参数
参数名
参数类型
参数描述
输出参数
参数名
参数类型
参数描述
 
 
 
返回值
返回类型 XMLHttpRequest,  成功 XMLHttpRequest对象,失败 null
备注
当用户浏览器不支持XMLHttpRequest对象时,提示用户;
 
  函数内部逻辑:
根据各浏览器的差异创建XMLHttpRequest对象;
方法原型
XmlHttpGetError
类型
API
XmlHttpGetError (rsXML,rsTxt)
功能说明
从中返回结果中解析错误代码与信息
调用关系
无限制
输入参数
参数名
参数类型
参数描述
 
rsXML
XML
 
rsTxt
String
 
输出参数
参数名
参数类型
参数描述
Success
Object
描述执行情况
返回值
返回类型 {code,desc},  成功code = =0对象,失败 code <> 0
备注
 
 
方法的内部逻辑:
从执行返回结果内提取功能执行的情况的描述信息;
附:这时前后台对于错误信息在XML文档内的格式要达成一致;比如:
 /*<error>
     <code>
     </code>
     <desc>
     </desc> 
 </error>
*/
方法原型
handleResponse
类型
API
handleResponse(responseXML, callBackMethod, params, responseText, listener,execHint)
功能说明
执行回调函数
调用关系
无限制
输入参数
参数名
参数类型
参数描述
responseXML
XML
返回结果
responseText
String
返回结果
callBackMethod
String
回调函数名
listener
Object
回调函数所在的对象
params
参数
 
execHint
Object
执行提示
输出参数
参数名
参数类型
参数描述
返回值
 
备注
 
方法的内部逻辑:
   调用方法XmlHttpGetError;
   // listener + callBackMethod 执行回调函数;
附:回调函数一种写法为:
    var AJ={};
    AJ.save_onLoad=function(success,rsXML,rsText,params,execHint){   
        execHint.Hide();
        If(success.code!=0){
            alert('发生错误#'+success.code+'):'+success.desc);
            return;
        }
//处理;
     };
XmlHttpSend、XmlHttpGET、XmlHttpPOST方法说明省略。
 
CacheHints缓存对象为全局对象;
将添加事件:onblur、onkeyup、onkeydown、onfocus
方法内部逻辑:
          If 该区域未创建{
                   //插入iframe
                   //构造显示外区域
}
方法内部逻辑:
          If 如果查询的数据不为空 即this.hintsInfo.hints is not null
          //循环 this.hintsInfo.hints 重画显示区域;
          并向区域添加事件onclick、onmouseover等。
方法内部逻辑:
          If 如果缓存内未找到
          调用MyXmlHttp.callMethod()方法异步查询数据;
方法原型
QueryMatchs_onLoad
类型
API
QueryMatchs_onLoad (success,rsXML,rsText,params,execHint)
功能说明
查询到数据后的回调函数
调用关系
无限制
输入参数
参数名
参数类型
参数描述
success
Object
错误信息
rsXML
XML
返回结果
rsText
String
返回结果
params
Object
请求参数
execHint
Object
执行提示
输出参数
参数名
参数类型
参数描述
 
 
 
返回值
 
备注
 
方法内部逻辑:
// hints 从rsXML内解析结果;
       this.UpdateMatchs(hints);
       this.UpdateHintsZone();
       //添加到缓存;
对于显示、关闭提示区域及为显示区域添加键盘和鼠标选择事件的方法省略。
 
 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值