// 一般文档页使用的基础js,sk的一个只包括ajax异步get方法微小子集。今后视情况逐步谨慎增加。 /* (function(){ if (navigator.useragent.tolowercase().match(/(ipad|iphone|android|phone|symbian|smartphone|ipod|xoom)/i)) { // 跳手机版报名网页 window.jumpksbm = function(did, seg) {window.open("/mob/mksbm.php?pid="+did+"&seg="+(seg?seg:1));} } else { // 跳电脑版报名网页 window.jumpksbm = function(did, seg) {window.open("/pub/ksbm.php?pid="+did+"&seg="+(seg?seg:1));} } })(); */ // ajax 通信类===================================================================================================================== if (!window.sk) window.sk = {}; sk.ajax = { errmsg : function(xml) { var _httpstatustext_ = []; _httpstatustext_[100]="初始的请求已经接受,客户应当继续发送请求的其余部分"; _httpstatustext_[101]="服务器将遵从客户的请求转换到另外一种协议"; _httpstatustext_[303]="类似于301/302,不同之处在于,如果原来的请求是post,location头指定的重定向目标文档应该通过get提取"; _httpstatustext_[304]="客户端有缓冲的文档并发出了一个条件性的请求(一般是提供if-modified-since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。 "; _httpstatustext_[305]="客户请求的文档应该通过location头所指明的代理服务器提取"; _httpstatustext_[400]="请求出现语法错误。 "; _httpstatustext_[401]="客户试图未经授权访问受密码保护的页面。应答中会包含一个www-authenticate头,浏览器据此显示用户名字/密码对话框,然后在填写合适的authorization头后再次发出请求。 "; _httpstatustext_[403]="资源不可用。"; _httpstatustext_[404]="无法找到指定位置的资源"; var status = xml.status; if ( status >= 200 && status < 300 || status === 304 ) { return null; } var str = _httpstatustext_[xml.status]; return (str?str:"未知错误") + "|status:" + xml.status; }, connect : function() { var gxmlhttp; if (window.activexobject) { gxmlhttp = new activexobject('microsoft.xmlhttp'); } else { gxmlhttp = new xmlhttprequest(); } if (gxmlhttp == null) alert("建立连结失败!"); return gxmlhttp; }, lasterror : '', // 异步(非阻塞)方式进行ajax操作 asynget : function (url, arg, back) { // obj为回调对象(可选,也可为null),back为回调函数必须的参数 try { var ret; var xmlhttp = sk.ajax.connect(); xmlhttp.onreadystatechange = function() { if (xmlhttp.readystate != 4) return; ret = xmlhttp.responsetext; var msg = sk.ajax.errmsg(xmlhttp); if (msg != null) { sk.ajax.lasterror = msg; xmlhttp = null; back(null); return; } ret = xmlhttp.responsetext; xmlhttp = null; back(ret); }; if (arg) var param = url + '?timestamp=' + new date().gettime() + '&' + arg; else param = url; xmlhttp.open('get', param, true); xmlhttp.send(null); } catch (e) { sk.ajax.lasterror = "服务器没有返回预期的对象图!"; back(null); return; } }, // 根据本应用的自身协议,检验返回是不是以特定标记开头,不是则是出问题了 // 这个函数不是通用的,返回null说明服务器返回的数据不可用,同时通过messagebox报错。否则为可用 after : function(obj) { }, // sk.ajax.getobj取得一个对象后的附加动作getobjafter(obj),可被重新定义以附加其他动作 onerror : function(obj) { if (obj) alert(obj.msg); else alert('返回null'); } };