﻿// AJAX JavaScript Document
// Author: h7s8
// Date: 2006-04-04

//ajax转载函数
//XMLHttpRequest提供客户端同http服务器通讯的协议
function makeRequest(url,ostr){
	var http_request;
	var has;
	var htmlstr;
	has = false;
	htmlstr = "";
	http_request = false;
	if(window.XMLHttpRequest){	//Firefox, Mozilla, Safari...
		http_request = new XMLHttpRequest();
		if(http_request.overrideMimeType){
			http_request.overrideMimeType('text/xml');
		}
	}else if(window.ActiveXObject) {	//IE
		try{
			http_request = new ActiveXObject("Msxml2.XMLHTTP");	//Msxml2.XMLHTTP.3.0
		}catch(e){
			try{				
				http_request = new ActiveXObject("Microsoft.XMLHTTP");
			}catch(e){}
		}
	}
	if(!http_request){		
		alert('创建XMLHTTP失败！');
		return false;
	}
	//makeHistory(url.split('.')[0]);	//创建url历史记录
	//formaturl(url);	//在url后面加一个随机数，可以解决url缓存问题
	if(url.split('?').length>1){		
		url += "&"+Math.random();	//在url后面加一个随机数，可以解决url缓存问题		
	}else{
		url += "?"+Math.random();
	}
	//alert(url);
	http_request.onreadystatechange = alertContents;
	http_request.open('GET', url, true);
	//http_request.open('POST', url, false);
	//XMLHttp.open(http-method, url, async, userID, password)
	//async=ture时表示使用异步通信方式，客户机就不等待服务器的响应；
	//async=flalse时表示使用同步通信方式，客户机就要等到服务器返回消息后才去执行其他操作
	http_request.send(null);	

	function alertContents(){
		if(http_request.readyState == 4){
			//XMLHttp.readyState的值、说明
			//0 Response对象已经创建，但XML文档上载过程尚未结束
			//1 XML文档已经装载完毕
			//2 XML文档已经装载完毕，正在处理中
			//3 部分XML文档已经解析
			//4 文档已经解析完毕，客户端可以接受返回消息
			if(http_request.status == 200){
				//alert(http_request.responseText);
				//客户机接收响应是通过XMLHTTP对象的属性实现的： 
				//responseText：将返回消息作为文本字符串； 
				//responseXML：将返回消息视为XML文档，在服务器响应消息中含有XML数据时使用； 
				//responseStream：将返回消息视为Stream对象；
				//responseBody：将返回信息以unsigned array格式表示，直接从服务器返回的未经解码的二进制数据；
				//XMLHTTP.status/XMLHTTP.statusText返回当前请求的长整型标准http状态码/状态说明： 
				//200/ok；
				if(ostr=='temp'){
					alert(http_request.responseText);
				}else{
					document.getElementById(ostr).innerHTML = http_request.responseText;
				}
			}else{
				document.getElementById(ostr).innerHTML = "<div id='loaderr'>装载数据出错...</div>"+htmlstr;
			}
		}else{
			if(ostr!='temp'){
				if(!has){
					htmlstr = document.getElementById(ostr).innerHTML;
					document.getElementById(ostr).innerHTML = "<div id='loading'>正在装载数据...</div>"+htmlstr;
					has = true;
				}
			}
		}	
	}
}


//在url后面加一个随机数，可以解决url缓存问题
function formaturl(url){	
	if(url.split('?').length>1){		
		url += "?"+Math.random();	//在url后面加一个随机数，可以解决url缓存问题		
	}else{
		url += "?"+Math.random();
	}
}

//创建url历史记录
function makeHistory(newHash){
	window.location.hash = newHash;
}
