您的位置:首页 > Web前端 > JavaScript

javaScript常规用法D

2007-03-25 20:10 323 查看
/*
* 7_1 Ajax��������������
*/
function newXMLHttpRequest() {
var xmlreq = null;
if (window.XMLHttpRequest) {
// ��Microsoft browsers������
xmlreq = new XMLHttpRequest();
} else if (window.ActiveXObject) {
// Microsoft browsers������
try {
xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e1) {
try {
xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
xmlreq = null;
}
}
}
if (xmlreq == null) {
if (!orteusSubmitStatus) {
alert("XMLHTTPRequest�������������s���������I");
}
}
return xmlreq;
}

/*
* 7_2 �������e���T�[�o�����M����
*/
function sendRequest (method, url, data, async, callback, thisObj, srcObjs, destObjs, runJsStatus) {
gAjaxExecStatus = true;
var xmlreq = newXMLHttpRequest();
xmlreq.open(method, url, async);
xmlreq.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xmlreq.setRequestHeader("If-Modified-Since","0");
xmlreq.onreadystatechange = function() {
// �T�[�o�����������@�����@����������������callback�������s��
if (xmlreq.readyState == 4) {
if (xmlreq.status == 200) {
// XML��������
var ajaxXml = xmlreq.responseXML;
var ajaxResponse = ajaxXml.getElementsByTagName("ajax-response")[0];
callback(ajaxResponse, thisObj, srcObjs, destObjs, runJsStatus);
} else {
gAjaxExecStatus = false;
if (!orteusSubmitStatus) {
alert("�T�[�o���������s���������I");
}
}
}
}
xmlreq.send(data);
}

/*
* 7_3 �����p��Ajax���/�b�h�������o��
*/
function callAjax(thisObj, srcObjs, destObjs, runJsStatus, runJavaStatus, url, callback) {
// Js������������A������������e���������������AAjax���������s�������������������f
// ���L���O�������AgCanExecAjaxStatus���K��true�������AAjax�������K�����s����
if (!gCanExecAjaxStatus) {
gCanExecAjaxStatus = true;
return;
}
switch (runJsStatus) {
case CT_DISP_CONTENT :
callAjaxDispComm(thisObj, srcObjs, destObjs, runJsStatus, runJavaStatus, url, callback);
break;
case CT_SCTBOX_BLANK_CDE_NAM :
case CT_SCTBOX_NOBLANK_CDE_NAM :
case CT_SCTBOX_BLANK_ONLY_NAM :
case CT_SCTBOX_NOBLANK_ONLY_NAM :
callAjaxSctBox(thisObj, srcObjs, destObjs, runJsStatus, runJavaStatus, url, callback);
break;
default :
break;
}
}

/*
* 7_4 �������c�a���e���/������Ajax�������o��
*/
function callAjaxDispComm(thisObj, srcObjs, destObjs, runJsStatus, runJavaStatus, url, callback) {
if (isBlankOrNull(callback)) {
callback = setAjaxDispContent;
}

if (isBlankOrNull(url)) {
// Java������������������
url = "/AjaxCommonServlet.ajax";
}
var ajaxUrl = gContextPath + url + getQueryString(srcObjs, runJavaStatus);
sendRequest("get", ajaxUrl, null, true, callback, thisObj, srcObjs, destObjs, runJsStatus);

}

/*
* 7_5 Ajax���������p�l�����������������yXML���������z
*/
function setAjaxDispContent(ajaxResponse, thisObj, srcObjs, destObjs, runJsStatus) {
var ajaxStatus = "";
try {
ajaxStatus = ajaxResponse.getElementsByTagName("status")[0].firstChild.nodeValue;
} catch (e) {
// ����������
}
if (ajaxStatus == "true") { // ����������
var contents = ajaxResponse.getElementsByTagName("content");
var contCnt = contents.length;
var destIndex = 0;
for (var i = 0; i < contCnt; i++) {
var items = contents[i].getElementsByTagName("item");
var itemCnt = items.length;
for (var j = 0; j < itemCnt; j++) {
try {
var val = items[j].getElementsByTagName("value")[0].firstChild.nodeValue;
var obj = destObjs[destIndex];
var objCnt = obj.length;
if (objCnt == null) { // ����������������
setValue(obj, val);
} else { // �������z��������
for (var k = 0; k < objCnt; k++) {
setValue(obj[k], val);
}
}
} catch (e) { // NULL������
// ����������
}
destIndex++;
}
}
setObjsColor(srcObjs, NORMAL_COLOR);
} else if (ajaxStatus == "false") { // ����������
setObjsColor(srcObjs, ERROR_COLOR);
clearValue(destObjs);
} else if (ajaxStatus == "SESSION_TIME_OUT") { // �^�C���A�E�g������
window.location = gContextPath + "/SessionTimeout.jsp";
}
gAjaxExecStatus = false;
}

/*
* 7_6 �������������l���N���A�iselect box���e���I���N���A�������j
*/
function clearValue(objs) {
var len = objs.length;
for (var i = 0; i < len; i++) {
var obj = objs[i];
try {
var len2 = obj.length;
if (len2 == null) { // ����������������
setValue(obj, "");
} else { // �������z��������
for (var j = 0; j < len2; j++) {
setValue(obj[j], "");
}
}
} catch (e) { // NULL������
// ����������
}
}
}

/*
* 7_7 �������������l�������iselect box���e���I�������������j
* �Espan�Adiv�������AinnerText������
* �Echeckbox�Aradiobox�������Achecked������
* �Etextbox�Ahidden�������Avalue������
* �Eselectbox�������Avalue�������iselectbox�����e�����I�����������������A���������������j
*/
function setValue(obj, val) {
if (obj != null) {
var tagName = obj.tagName.toUpperCase();
var type = obj.type;
if (tagName == "SPAN" || tagName == "DIV") {
if (isBlankOrNull(val)) {
val = " ";
}
obj.innerText = val;
} else if (type == "checkbox" || type == "radio") {
if (obj.value == val) {
if (!obj.checked) {
obj.checked = true;
setObjChange(obj);
}
} else {
if (obj.checked) {
obj.checked = false;
setObjChange(obj);
}
}
} else if (type == "text" || type == "hidden" || type == "file" || type == "password" || type == "textarea") {
if (type != "hidden") {
setText(obj, val);
} else {
obj.value = val;
}
} else if (type == "select-one") {
if (obj.value != val) {
obj.value = val;
setObjChange(obj);
}
}
}
}

/*
* 7_8 ���X�g�{�b�N�X��Ajax�������o��
*/
function callAjaxSctBox(thisObj, srcObjs, destObjs, runJavaStatus, url, callback, runJsStatus) {
if (isBlankOrNull(callback)) {
callback = setAjaxSctBox;
}

if (isBlankOrNull(url)) {
// Java������������������
url = "/AjaxCommonServlet.ajax";
}
var ajaxUrl = gContextPath + url + getQueryString(srcObjs, runJavaStatus);
sendRequest("get", ajaxUrl, null, true, callback, thisObj, srcObjs, destObjs, runJsStatus);

}

/*
* 7_9 ���X�g�{�b�N�X��Ajax���������p�l�������yXML���������z
*/
function setAjaxSctBox(ajaxResponse, thisObj, srcObjs, destObjs, runJsStatus) {
clearSctBox(destObjs);
var ajaxStatus = "";
try {
ajaxStatus = ajaxResponse.getElementsByTagName("status")[0].firstChild.nodeValue;
} catch (e) {
// ����������
}
if (ajaxStatus == "true") { // ����������
var sctBoxes = ajaxResponse.getElementsByTagName("content");
var sctBoxCnt = sctBoxes.length;
for (var i = 0; i < sctBoxCnt; i++) {
var items = sctBoxes[i].getElementsByTagName("item");
var itemCnt = items.length;
var destSctBox = destObjs[i];
if (runJsStatus == CT_SCTBOX_BLANK_CDE_NAM || runJsStatus == CT_SCTBOX_BLANK_ONLY_NAM) {
destSctBox.options.add(new Option("", ""));
}
for (var j = 0; j < itemCnt; j++) {
var name = "";
var value = "";
try {
name = items[j].getElementsByTagName("name")[0].firstChild.nodeValue;
} catch (e) {
// ����������
}
try {
value = items[j].getElementsByTagName("value")[0].firstChild.nodeValue;
} catch (e) {
// ����������
}
if (name != "" || value != "") {
if (runJsStatus == CT_SCTBOX_BLANK_CDE_NAM || runJsStatus == CT_SCTBOX_NOBLANK_CDE_NAM) {
destSctBox.options.add(new Option(name + ":" + value, name));
} else if (runJsStatus == CT_SCTBOX_BLANK_ONLY_NAM || runJsStatus == CT_SCTBOX_NOBLANK_ONLY_NAM) {
destSctBox.options.add(new Option(value, name));
}
}
}
setObjChange(destSctBox);
}
setObjsColor(srcObjs, NORMAL_COLOR);
} else if (ajaxStatus == "false") { // ����������
setObjsColor(srcObjs, ERROR_COLOR);
} else if (ajaxStatus == "SESSION_TIME_OUT") { // �^�C���A�E�g������
window.location = gContextPath + "/SessionTimeout.jsp";
}
gAjaxExecStatus = false;
}

/*
* 7_10 ���X�g�{�b�N�X���N���A
*/
function clearSctBox(objs) {
var len = objs.length;
for (var i = 0; i < len; i++) {
objs[i].options.length = 0;
setObjChange(objs[i]);
}
}

/*
* 7_11 Request�p������������
*/
function getQueryString(srcObjs, runJavaStatus) {
var queryString = "?runStatus=" + escape(runJavaStatus);
var len = srcObjs.length;
for (var i = 1; i <= len; i ++) {
if (srcObjs[i - 1] == null) {
queryString += "&srcValue" + i + "=";
} else {
var type = srcObjs[i - 1].type;
if (type == null) {
queryString += "&srcValue" + i + "=" + escape(srcObjs[i - 1]);
} else {
if (type == "text" || type == "password" || type == "checkbox"
|| type == "radio" || type == "file" || type == "hidden"
|| type == "select-one" || type == "textarea") {
queryString += "&srcValue" + i + "=" + escape(srcObjs[i - 1].value);
}
}
}
}
return queryString;
}

///////////////////////////////////////////////////////////////////////////////////////////////////
function setObjsColor(objs, colorType) {
var len = objs.length;
for (var i = 0; i < len; i ++) {
if (objs[i] != null) {
var type = objs[i].type;
if (type == "text" || type == "password" || type == "checkbox"
|| type == "radio" || type == "file" || type == "select-one" || type == "textarea") {
setFieldColor(objs[i], colorType);
}
}
}
}

function setObjChange(obj) {
gCanExecAjaxStatus = false;
obj.fireEvent('onchange');
gCanExecAjaxStatus = true;
}

///////////////////////////////////////////////////////////////////////////////////////////////////
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: