所以只有当readyState=4时,一个完整的服务器响应已经收到了,函数才可以处理该响应。具体代码如下:
if (http_request.readyState == 4) { // 收到完整的服务器响应 } else { // 没有收到完整的服务器响应 }当readyState=4时,一个完整的服务器响应已经收到了,接着,函数会检查HTTP服务器响应的状态值。完整的状态取值可参见W3C文档。当HTTP服务器响应的值为200时,表示状态正常。
在检查完请求的状态值和响应的HTTP状态值后,就可以处理从服务器得到的数据了。有两种方式可以得到这些数据:(1)以文本字符串的方式返回服务器的响应
(2)以XMLDocument对象方式返回响应
实例一: 用文本字符串的方式返回服务器的响应来验证网易通行证帐号是否存在
首先,我们登陆网易通行证注册页面,可以看到检测用户名是否存在是将用户名提交给checkssn.jsp页面进行判断,格式为:
reg.163.com/register/checkssn.jsp?username=用户名 根据上面讲到的方法,我们可以利用AJAX技术对网易通行证用户名进行检测:
第一步:新建一个基于Xhtml标准的网页,在区域插入Javascript函数如下:
function getXMLRequester( ){ var xmlhttp_request = false; try{ if( window.ActiveXObject ){ for( var i = 5; i; i-- ){ try{ if( i == 2 ){ xmlhttp_request = new ActiveXObject( "Microsoft.XMLHTTP" ); }else{ xmlhttp_request = new ActiveXObject( "Msxml2.XMLHTTP." + i + ".0" ); xmlhttp_request.setRequestHeader("Content-Type","text/xml"); xmlhttp_request.setRequestHeader("Content-Type","gb2312"); }break;} catch(e){ xmlhttp_request = false; } } }else if( window.XMLHttpRequest ){ xmlhttp_request = new XMLHttpRequest();if (xmlhttp_request.overrideMimeType){ xmlhttp_request.overrideMimeType('text/xml'); } } }catch(e){ xmlhttp_request = false; } return xmlhttp_request ; } function IDRequest(n){//定义收到服务器的响应后需要执行的JavaScript函数 url=n+document.getElementById('163id').value;//定义网址参数 xmlhttp_request=getXMLRequester();//调用创建XMLHttpRequest的函数 xmlhttp_request.onreadystatechange = doContents;//调用doContents函数 xmlhttp_request.open('GET', url, true); xmlhttp_request.send(null); } function doContents() { if (xmlhttp_request.readyState == 4) {// 收到完整的服务器响应 if (xmlhttp_request.status == 200) {//HTTP服务器响应的值OK document.getElementById('message').innerHTML = xmlhttp_request.responseText; //将服务器返回的字符串写到页面中ID为message的区域 } else { alert(http_request.status); } } }
在区域建立一个文本框,id为163id
再建一个id为messsge的空白区域用来显示返回字符串(也可以通过Javascript函数截取一部分字符串显示):
这样,一个基于AJAX技术的用户名检测页面就做好了,不过这个页面将返回服务器响应生成页面的所有字符串,当然还可以对返回的字符串进行一些操作,便于应用到不同的需要当中。
文章来源于领测软件测试网 https://www.ltesting.net/