Ajax对象杂谈

对于Ajax技术现在很多人都不陌生了,习惯了用ExtJS或Jquery等JS库封装的Ajax。记得哪天朋友问题怎样手动创建一个XMLHttpRequest 对象?愣了半分钟,还是写一写吧。

var xmlhttp;
function createRequest() {
    if (window.ActiveXObject) {
	// code for IE6, IE5
        xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    else if (window.XMLHttpRequest) {
	// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp = new XMLHttpRequest();
    }
}
createRequest();
function sendRequest()
{
	if(xmlhttp)
	{
		xmlhttp.open("GET", url, true);
		xmlhttp.send(null);
		xmlhttp.onreadystatechange = getRequestAndManager;
	}
}

function getRequestAndManager()
{
	if (xmlhttp_request.readyState == 4) {// 收到完整的服务器响应
		if (xmlRequest.status == 200) {
			var requestReturnStr = xmlhttp.responseText;
			var json = eval("("+requestReturnStr+")");
			
		}
	} 
}

与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。如果不需要使用缓存数据可以在URL后面添加一个时间戳,以保证每次请求的数据都和服务器保持一致。

 然而,在以下情况中,请使用 POST 请求:

  • 无法使用缓存文件(更新服务器上的文件或数据库)
  • 向服务器发送大量数据(POST 没有数据量限制)
  • 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠

相关推荐