今天参考了不少的AJAX代码,发现之前在框架设计这本书里推荐的代码编写习惯都是不错的,只是之前不明白就没用了
比如之前的写法是
public void Method() { MessageBox.Show(“This is a Method!”); }
|
推荐的写法是
public void Method() { MessageBox.Show(“This is a Method!”); } |
直到今天在写一段长Javascript代码中才发现好处,很容易的就找出对应的代码段…
特别是在JavaScript中..
例:在页面中有下面一段代码
<script type="text/javascript" language=javascript> var http_request = false; function makeRequest(url){ http_request = false;
//针对不同浏览器做出不同处理,上篇文章已交代过 if(window.XMLHttpRequest){ http_request = new XMLHttpRequest(); if(http_request.overrideMimeType) { http_request.overrideMimeType('text/xml'); } else if(window.ActiveXObject) { try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) {} } }
if(!http_request){ alert('Giving up :( Cannot create an XMLHTTP instance)'); return false; }
//每当readyState的值发声改变时,也就是说开始时,就产生了一个事件,这里引用了函数alertContents()进行处理 //onreadystatechange只是个属性,而不是方法名(函数名)却可以赋值给任何变量? //查了相关资料,说。函数在JavaScript中是第一等的对象,可以赋值给任何变量。 //还可以这么写 http_request.onreadystatechange = function() { //代码 }; http_request.onreadystatechange = alertContents;
//第一个参数表示以GET方式,也可以选者POST方式等,但注意一定要全部大写,否则有的浏览器无法解析, //这个一共有7种,另外五种分别是HEAD,PUT,DELETE,OPTIONS,TRACE //第二个参数是URL,表示GET的内容的地址 //第三个参数代表,如果为true就代表提交的是一个异步XMLHTTP请求,这时浏览器并没有做什么 http_request.open('GET',url,true); //发送请求 //send的参数以POST方式传送资料时,必须先将MIME形态改好,如下 //http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); http_request.send(null); }
function alertContents(){ //当状态为4的时候代表已经传回所有数据了,便可以开始解析所有的数据 // 0为还没开始,对象已创建,尚未调用open() //1读取中,调用open() //2已读取,调用send() //3数据交换, //4完成所有 if(http_request.readyState == 4){ // 服务器传回的HTTP状态码,详情请查看附录 // statustext服务器返回的状态文本信息 if(http_request.status == 200) { //http_request.responseText 把回值当字符串用 //http_request.responseXML 把传回值当为XMLDocument ,再用Javascript函数处理 alert(http_request.responseText); } else { alert('获取数据时出现异常.'); } } } } </script> <span style="cursor: pointer; text-decoration: underline" onclick="makeRequest('test.html')"> Make a request </span> |
运行,点击Make a request之后是不是提示获取数据时出现异常.那是因为无法找到test.html文件
这个页面的意思是当点击Make a request后,会向服务器请求名发送名为test.html文件的内容,并用ALERT输出.
前面的例子中,是使用responseText直接读取,现在使用responseXML读取XML相关数据
首先,创建个XML文件,
内容如下
<?xml version="1.0" encoding="utf-8" ?> <root> 哦累累,哦拉拉。 </root> |
在alertContents函数中修改alert(http_request.responseText);为 var xmldoc = http_request.responseXML; var root_node = xmldoc.getElementsByTagName('root').item(0); alert(root_node.firstChild.data); 在上面那个例子的基础上,修改 onclick="makeRequest('test.xml')" |
至于更复杂的XML操作方式在下篇文章继续研究
附录,http 1.1支持的状态代码 |