Logger.Reporter = {
/**
* return true if send successfully, else return false
*
* data is a json object e.g. {a: "hello", b: "hi"}
*
* callback(status),
*/
sendReport : function(data, callback){
var strjson = stringify(data);
//alert(strjson);
if(!callback)
callback = this._defaultCallback;
this._callback = callback;
//send data timeout
var timeoutId = setTimeout(this._requestTimeoutCallback, this._requestTimeout);
var xmlHttpRequest = this._getXmlHttpRequest();
var reqParam = this._getRequestPara("POST");
xmlHttpRequest.open(reqParam.method, reqParam.url, reqParam.async);
xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
xmlHttpRequest.setRequestHeader("Content-length", strjson.length);
xmlHttpRequest.setRequestHeader("Connection", "close");
xmlHttpRequest.send(strjson);
xmlHttpRequest.onreadystatechange = function(){
//alert(this.readyState +" "+ this.status);
clearTimeout(timeoutId);
if(this.readyState == 4){
callback(this.status == 200);
}
};
},
_requestTimeoutCallback: function(){
var xmlHttp = Logger.Reporter._getXmlHttpRequest();
if(xmlHttp != null){
xmlHttp.onreadystatechange = null;
xmlHttp.abort(); //doesn't work correctly
Logger.Reporter._callback(false);
}
},
/**
* do nothing
*/
_defaultCallback : function(status){
},
_getRequestPara : function(_method){
return {method : _method, url: Config.serverAddr, async : true};
},
_getXmlHttpRequest : function(){
if(this._xmlHttpRequest == null){
if (window.XMLHttpRequest) {
this._xmlHttpRequest = new XMLHttpRequest();
} else {
var MSXML = ['MSXML2.XMLHTTP.5.0', 'MSXML2.XMLHTTP.4.0',
'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP'];
for ( var i = 0; i < MSXML.length; i++) {
try {
this._xmlHttpRequest = new ActiveXObject(MSXML[i]);
} catch (e) {
}
}
}
}
return this._xmlHttpRequest;
},
_xmlHttpRequest : null,
_callback : null,
_requestTimeout : 5000,
_data : null
};
/**
* come from JSON, convert JSON object to string
* @param arg
* @return
*/
function stringify(arg){
var c, i, l, s = '', v;
switch (typeof arg) {
case 'object':
if (arg) {
if (arg instanceof Array) {
for (i = 0; i < arg.length; ++i) {
v = stringify(arg[i]);
if (s) {
s += ',';
}
s += v;
}
return '[' + s + ']';
} else if (typeof arg.toString != 'undefined') {
for (i in arg) {
v = arg[i];
if (typeof v != 'undefined' && typeof v != 'function') {
v = stringify(v);
if (s) {
s += ',';
}
s += stringify(i) + ':' + v;
}
}
return '{' + s + '}';
}
}
return 'null';
case 'number':
return isFinite(arg) ? String(arg) : 'null';
case 'string':
l = arg.length;
if(arg == "text" ){
arg = '#' + arg ;
}else if(arg != "t_testcase" && arg != "testcase" && arg != "t_verdict" && arg != "verdict"){
arg = '@' + arg ;
}
s = '"';
for (i = 0; i < l; i += 1) {
c = arg.charAt(i);
if (c >= ' ') {
if (c == '\\' || c == '"') {
s += '\\';
}
s += c;
} else {
switch (c) {
case '\b':
s += '\\b';
break;
case '\f':
s += '\\f';
break;
case '\n':
s += '\\n';
break;
case '\r':
s += '\\r';
break;
case '\t':
s += '\\t';
break;
default:
c = c.charCodeAt();
s += '\\u00' + Math.floor(c / 16).toString(16) +
(c % 16).toString(16);
}
}
}
return s + '"';
case 'boolean':
return String(arg);
default:
return 'null';
}
}
分享到:
相关推荐
【JSP+Ajax实现分类查询功能】 在Web开发中,JSP(JavaServer Pages)常用于动态网页的生成,而Ajax(Asynchronous JavaScript and XML)则可以实现页面局部更新,提高用户体验。本实例将详细解释如何结合JSP和Ajax...
而收缩功能则是通过AJAX实现分类的展开与收起,减少了页面的视觉复杂性。 项目中的`.db.sql`文件很可能包含了数据库脚本,用于创建和初始化分类表结构,可能包括了父分类ID和子分类ID等字段,以支持级联关系。`....
在这个“jQuery+ajax实现三级级联”的实例中,我们主要探讨如何利用这两种技术来创建一个能够逐级联动的下拉菜单系统,这在数据筛选和表单填写中十分常见,如地区选择、部门分类等场景。 首先,jQuery是一个轻量级...
【Ajax实现用户登录】知识点详解 在Web应用中,用户登录是常见的功能模块,而Ajax(Asynchronous JavaScript and XML)技术的引入,极大地提升了用户体验,实现了页面无刷新的数据交互。在"Ajax验证用户名是否已经...
通过以上步骤,我们就可以利用Ajax实现一个从数据库动态获取数据的级联菜单。这种技术在实际项目中非常常见,因为它提供了流畅的用户体验,减少了不必要的页面刷新,提高了网页的交互性和效率。在开发过程中,应注重...
**标签分析:** "AJAX类"标签表明这是一个与AJAX相关的代码实现,可能是一个JavaScript对象或函数,用于简化AJAX请求的创建和管理。 **子文件内容推测:** - **ajax.js**:这是实际封装的AJAX类的源代码文件,可能...
本文将深入探讨如何利用AJAX技术来实现网页的定时刷新功能,同时结合JSP的后端处理,以提高用户体验。 首先,了解AJAX的核心概念。AJAX是一种不重新加载整个页面的情况下更新部分网页的技术。它通过XMLHttpRequest...
**标题解析:** "AJAX实现注册验证的例子" 这个标题表明了我们要探讨的是一个使用AJAX技术来实现用户注册时的实时验证的示例。在网页应用中,AJAX(Asynchronous JavaScript and XML)允许我们在不刷新整个页面的...
通过以上分析,我们可以看到,使用Ajax实现自动补全功能涉及到前后端的紧密配合。前端负责事件监听、数据请求与展示,而后端则负责数据处理和响应。这种技术不仅提升了用户体验,也提高了系统的响应速度,是现代Web...
在本案例中,“Ajax实现的在线聊天室”是一个利用Ajax技术构建的实时交互平台,让用户可以即时发送和接收消息,提高了用户体验,避免了传统页面刷新带来的延迟感。 1. **Ajax基础**:Ajax的核心是JavaScript异步...
### Echarts通过Ajax实现动态数据加载 #### 一、引言 在现代Web开发中,数据可视化是一项重要的技能。Echarts作为一款强大的JavaScript图表库,因其丰富的图表类型、灵活的配置选项以及良好的交互性而备受开发者...
在无限级分类中,Ajax可以实现异步加载,当用户滚动页面或点击按钮时,动态地获取并显示分类的子级,提升用户体验,减少网络请求的延迟。 接着,是**PHP**。PHP是一种广泛使用的服务器端脚本语言,尤其适合Web开发...
json+ajax基本实现,含有jar包,commons-beanutils-1.8.0.jar,commons-collections-3.2.1.jar,commons-lang-2.5.jar,commons-logging-1.2.jar,ezmorph-1.0.6.jar,jackson-databind-2.8.9.jar,json-lib-2.4-jdk...
综上所述,`ajax实现无刷新删除` 主要涉及以下知识点: 1. **AJAX**:Asynchronous JavaScript and XML,即异步JavaScript和XML,它允许网页在不重新加载整个页面的情况下与服务器交换数据并更新部分网页内容。在本...
总的来说,Struts2和Ajax的结合使用使得Web应用能够提供更快速、更直观的用户交互,而这个代码和jar包组合可能就是实现这一目标的一个实例。通过阅读提供的文档和使用示例,你可以深入了解并实践这一技术,从而提升...
3. 服务层:定义接口和实现类,处理搜索逻辑,可能需要使用Spring的@Service注解进行组件管理。 4. 数据访问层:使用Hibernate的Session和Criteria API或者HQL语句进行数据库查询。 5. 模型:定义数据实体类,对应...
在IT行业中,AjaxResponse是一个常见的后端工具类,主要用于处理前端与后端之间的异步通信,即Ajax请求的响应。Ajax技术允许网页不刷新整个页面就能与服务器交换数据并更新部分网页内容,大大提升了用户体验。这个名...
【标题】:“jsp+ajax实现简单聊天室” 在IT领域,使用JSP(JavaServer Pages)和AJAX(Asynchronous JavaScript and XML)技术构建一个简单的聊天室是一项常见的实践。JSP是Java EE平台的一部分,用于动态创建Web...
在网页开发中,"Ajax 实现无限级联动"是一种常见的交互设计技术,它允许用户在无需刷新整个页面的情况下,通过下拉菜单、树形结构或其他交互元素实现各级数据的动态加载。这种技术大大提升了用户体验,使得网站操作...
总的来说,"ajax实现的动态导航条"是一个结合了HTML、CSS和JavaScript(特别是AJAX)技术的实用案例,它展示了如何利用前端技术实现动态交互和高效的数据加载,为用户提供更加顺畅的浏览体验。在实际开发中,这样的...