您的位置:首页 > 其它

ajax 简单封装

2012-08-06 00:37 162 查看
/** 调用远程服务器程序
*@_url    服务器url
*@_target 本地用于容纳返回结果的 html 元素,可以为空
*@async   true-异步调用 false-同步调用
*@params  附加调用参数
*@callback 服务器端成功返回后的回调函数
*返回值:如果同步调用,则返回服务器的返回结果值,否则直接返回 false
*/
function callToServer(_url, _target, async, params, callback) {
try {
if (async==null||async==true) async=true;
var ret;
var xmlHttp = createXMLHttpRequest();
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4) {  // 4-READY_STATE_COMPLETE
ret = xmlHttp.responseText;
if (_target) {
var selObj = getElement(_target);
if (selObj) {
if (selObj.tagName && "input,textarea,select".indexOf(selObj.tagName.toLowerCase())>=0)
selObj.value=ret;
else {
try {
selObj.innerHTML=ret;
} catch (e1) {}
}
}
}

// 回调函数
if (callback)
callback.call(this, ret);
}
};

xmlHttp.open("POST", _url, async); // true-异步 false-同步
xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
xmlHttp.setRequestHeader("req-type", "ajax");
if (params && (typeof params)=="object")  // json
params = serializeJson(params);

xmlHttp.send(params);

} catch(e) {
window.alert(e);
}

if (async) return false;
else return ret
}

// ajax 的请求对象
function createXMLHttpRequest() {
var xmlHttp = null;
if (window.ActiveXObject) {
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}

} else if (window.XMLHttpRequest) {
xmlHttp = new XMLHttpRequest();
}
return xmlHttp
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: