?? ajax.lib.js
字號:
?/*
By Hangring
#2007.01.11#
---
use list:
> global.lib.js
> browser.lib.js
---
Ajax
*/
$Defined('Ajax');
var Ajax = {};
Ajax.Init = function (callback) {
callback.req = null;
// listener
callback.listener = function () {
if (callback.req.readyState == 4) {
if (callback.req.status == 200) {
// right
try {
callback(Browser.IsIE && callback.encode == 'gb2312' ? Ajax.gb2utf8(callback.req.responseBody) : (callback.type == 'text' ? callback.req.responseText : callback.req.responseXML));
}
catch (e) {
callback.halt && callback.halt('[callback] ' + e.name + ':' + e.message);
}
}
else {
// error
callback.halt && callback.halt('[callback error] ' + callback.req.status);
}
}
}
callback.init = function () {
if (window.XMLHttpRequest) {
callback.req = new XMLHttpRequest();
}
else if (window.ActiveXObject) {
// isIE = true;
try {
callback.req = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
callback.req = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e) {
callback.req = false;
}
}
}
if (callback.req) {
callback.req.onreadystatechange = function () {callback.listener()};
}
}
callback.init();
// send
// Description:
// opt = {
// content : '',
// /* 以text|xml方式返回 */
// type : 'text'|'xml',
// /* 指定請求頁面的編碼,當前只實現gb2312到utf-8轉換 */
// encode : 'gb2312',
// asyn : true|false,
// action : 'post'|'get',
// error : true|false
// }
//
callback.send = function (url, opt) {
opt = opt || {content:'',encode:'',asyn:true};
opt.content = !!opt.content ? opt.content : '';
opt.type = (opt.type == undefined || opt.type.toLowerCase() == 'text') ? 'text' : 'xml';
opt.encode = opt.encode ? opt.encode.toLowerCase() : '';
opt.asyn = opt.asyn == undefined ? true : !!opt.asyn;
opt.action = (opt.action == undefined || opt.action.toLowerCase() == 'get') ? 'get' : 'post';
opt.error = opt.error == undefined ? false : !!opt.error;
callback.type = opt.type;
callback.encode = opt.encode;
callback.error = opt.error;
try {
callback.req.open(opt.action, url, opt.asyn);
}
catch (e) {
callback.halt && callback.halt('[open] ' + e.name + ':' + e.message);
return;
}
try {
callback.req.setRequestHeader('Connection', 'close');
this.req.setRequestHeader('Accept-Encoding', 'gzip, deflate');
callback.req.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded' + (opt.encode ? ';charset=' + opt.encode : ''));
if(callback.req.overrideMimeType && opt.encode) {
callback.req.overrideMimeType('text/xml' + (opt.encode ? ';charset=' + opt.encode : ''));
}
callback.req.send(opt.content);
}
catch (e) {
callback.halt('[open] ' + e.name + ':' + e.message + '\n** 檢查是否為跨域訪問。');
}
};
// abort
callback.abort = function () {
callback.req.abort();
};
// 中斷,并提示錯誤信息
callback.halt = function (description) {
callback.error && alert(description);
}
}
// gb2312 to utf8
Ajax.gb2utf8 = function (data) {
var glbEncode = [];
gb2utf8_data = data;
execScript("gb2utf8_data = MidB(gb2utf8_data, 1)", "VBScript");
var t = escape(gb2utf8_data).replace(/%u/g,"").replace(/(.{2})(.{2})/g,"%$2%$1").replace(/%([A-Z].)%(.{2})/g,"@$1$2");
t = t.split("@");
var i=0, j = t.length, k;
while(++i < j) {
k = t[i].substring(0,4);
if(!glbEncode[k]) {
gb2utf8_char = eval("0x" + k);
execScript("gb2utf8_char = Chr(gb2utf8_char)", "VBScript");
glbEncode[k] = escape(gb2utf8_char).substring(1, 6);
}
t[i] = glbEncode[k] + t[i].substring(4);
}
gb2utf8_data = gb2utf8_char = null;
return unescape(t.join("%"));
}
/*
只能請求同域下的頁面,否則會出現跨域問題
---
Ajax.Init(_callback);
// (1)
_callback.send(url, {content:'', encode:'gb2312', action:'get', asyn:true, error:false});
// (2) Or
_callback.init();
_callback.send(url, {content:'', encode:'gb2312', action:'get', asyn:true, error:false});
// call back
function _callback (content) {
// ...
}
*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -