AJAX: 如何使用HttpRequest对象

本文主要介绍如何使用 HttpRequest 对象,如何向服务器发送请求,以及如何处理服务器响应

使用HttpRequest对象发送请求步骤:

1. 创建 HttpRequest 对象 

var xmlhttp = new XMLHttpRequest();

2. 告诉 XMLHttpRequest 对象,当状态发生改变时, 会调用哪个函数。

为此,要把 onreadystatechange 属性设置为指向 JavaScript 函数的指针

xmlhttp.onreadystatechange = renewMsg;

3. 指定请求属性。XMLHttpRequest  对象的 open() 方法指定将发出的请求。

xmlhttp.open("GET", url, true);

4. 将请求发送给服务器。send() 方法把请求发送到指定的目标资源。

例子:

//发送给ajax接收器
function sendMsgToAjax()
{
	//
	var question = document.getElementById('inputArea').value;
	//alert(msg);
	question = trim(question);
	if(question == "请提问" || question == "请在此输入您的问题" || question == "您的建议答案是") return;
	if(question != "")
	{
		var url = "recvMsg.php?question=" + question + "&TempUserID="+TempUserID + "&preQuestion="+preQuestion+ "&IsTeachMode="+ IsTeachMode + "&IsAsk="+ IsAsk; 
		
		preQuestion = question;
		document.getElementById('inputArea').value = "";
		//alert(url);
		xhr.open("GET", url, true);
		xhr.setRequestHeader("If-Modified-Since","0");
		xhr.onreadystatechange = renewMsg; //只要响应来,就调用这个函数
		xhr.send();
	}
}

//更新本页内容
function renewMsg()
{
	if(xhr.readyState == 4)
	{ //XMLHttpRequest 		
		var xmlDoc = xhr.responseText;
		//alert(xmlDoc);
		var s = xmlDoc.split("|");
		xmlDoc = s[0];
		//alert(s[0]);
		//alert(s[1]);
		//接收信息内容去掉html标签
		xmlDoc = xmlDoc.replace(/>/g, '>');
		xmlDoc = xmlDoc.replace(/</g, '<');
		xmlDoc = xmlDoc.replace(/"g/, '\"'); 

		var financeUrl = s[1];/金融图片
		document.getElementById('financeImg').src = financeUrl;

		var weatherURL = s[2];
		document.getElementById('weather').src = weatherURL;
		
		var searchURL = s[3];
		document.getElementById('contentFrm').src = searchURL;

		if(financeUrl)//判断是否是金融问句,是跳转到股票section
		{
			doClick('a_section2');
		//document.getElementById("a_section2").click(); //变态的ie8不支持
		}
		else if(weatherURL)
		{
			doClick('a_section3');
		}
		else if(searchURL)
		{
			doClick('a_section4');
		}
		else  //不是以上问句,跳转到首页section
		{
			doClick('a_section0');
			//document.getElementById("a_section0").click();//变态的ie8不支持
		}
		
		//alert(financeUrl);
		//location.reload();
		//alert(xmlDoc);
		var oldMsg = document.getElementById('outputArea').innerHTML;
		//alert(old);
		document.getElementById('outputArea').innerHTML = oldMsg + xmlDoc ;			
	}
	if(xhr.readyState == 4 && IsTeachMode)
	{
		IsAsk++;
		if(IsAsk % 2 == 0)
		{
			document.getElementById('inputArea').value = '请提问';
		}
		else 
		{
			document.getElementById('inputArea').value = '您的建议答案是';
		}
	}
	//滚动条置底
	var div = document.getElementById('outputArea');
	div.scrollTop = div.scrollHeight; 
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值