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实现分类查询功能的实例代码,分享给大家供大家参考,具体如下: 这次是对小学期关于大学毕业生信息管理系统课程设计中遇到的一些问题和解决方法进行记录和分享。 题目要求:提供企业...
用Ajax实现的一个级联菜单,下拉菜单是从数据库中取数据的。
本文将采用Jquery+Ajax+PHP+MySQL来实现一个客户分类列表的管理,如何利用Ajax和Json技术让用户操作起来觉得更轻松,且看本文一一讲解。
采用ajax技术实现的图形验证码,在前端进行验证。验证码信息为图片。每一行代码均有注释,通俗易懂。 实现步骤: 1、创建web工程 ... 6、在js文件中,通过dwr,调用AjaxService类中的方法,取得数据,实现判断
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 php mysql 无限级分类 保证能用
Xajax类功能描叙:Xajax将服务器端JavaBean中以on开始的函数生成客户端可供javascript调用的同名函数,从而实现 服务器端响应客户端事件进行处理的功.JavaBean中调用XajaxResponse生成XML文档返回客户端进行处理 ...
sqlhelperl类 ajax实现异步请求
javascript网页特效108个 http://bbs.esiyang.com收集的.... WINDOWS脚本技术大全 新浪Html在线编辑器 AJAX实现类GoogleSug效果 ◆图形淡出淡隐 ◆晃动的图形 ◆变换图形 ◆随机图形 ...
内容索引:.NET源码,Ajax相关,下拉菜单,Ajax AJAX+ASP.NET 多级无刷新下拉列表菜单,...第三个则是下拉选择框的形式,每次从选择框内选择一个项目,会在右侧自动生成相关子类列表框,依次类推。三个都是基于数据库的。
使用ajax实现电子商务网站中的购物车系统+源码,希望对你有帮助!
AJAX实现类Google Suggest效果 *测试平台:Firefox2.0,IE6.0,IE7.0 *演示地址:http://www.okajax.com/demo/suggest/ *:文件结构: index.htm:首页,展现效果 ajax_result.asp:ajax调用后台返回结果文件 result.asp:...
异步的文件上传是在现代的AJAX实现的Web应用里面经常要遇到,必须解决的问题。但是标准的AJAX类(XmlHttpRequest)无法实现传输 文件的功能。因此,这里讨论的内容就是如何在AJAX的技术的基础之上构建异步的文件上传...
修复了一些细节代码(支持持续按键事件) *项目名称:AJAX实现类Google Suggest效果*作者:草履虫(也就是蓝色的ecma)*联系:caolvchong@gmail.com*时间:2007-7-7*工具: DreamWeaver(写ASP),Aptana(写Javascript,HTML和...
Ajax实现图片剪裁源码 程序介绍: 上传图片后,可以在可视框中查看待编辑图像。编辑区有一个固定大小的截取框, 为实际保存图像的大小,可缩放、移动、拖动图像调整需要保存的图像范围。 编辑图像的数值,实际宽...
前端页面通过ajax与后台通信,根据后台处理结果响应前端页面交互操作,这是一个很典型的Ajax和JSON应用的例子。
// 如果是多个类的方法合并,最多支持 10 个类。如下: // AjaxHandler, Class2, Class3 ...> { //此处不需要任何代码 } 例三: <script type="text/javascript" src="Ajax/Core.js"></script> // 配套...
AJAX+PHP实现的几种效果 ,由于本人不懂PHP,所以不知道做什么的 。 能研究明白的就去下载吧,
用Ajax2.0实现用户注册时,异步调用后台类,判断用户名是否可用。