langhua9527 发表于 2013-1-23 02:51:35

AJAX原始的GET和POST请求方式

//创建XMLHttpRequest对象var xmlHttpRequest;function AjaxXMLHttpRequest(){//获得页面数据var username = document.getElementById("username").value;if(window.XMLHttpRequest){//Firefox IE7 IE8 Opera xmlHttpRequest = new XMLHttpRequest();if(xmlHttpRequest.overrideMineType){//修正一些浏览器的BUGxmlHttpRequest.overrideMineType("text/xml");}}else if(window.ActiveXObject){//IE6 为什么这个写在后面?因为前面那个好,用更新的activexName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];for(var i=0;i<activexName.length;i++){try{//一次一次的尝试创建xmlHttpRequest对象xmlHttpRequest = new ActiveXObject(activexName);}catch(e){}}}//设置回调函数xmlHttpRequest.onreadystatechange = callbacks;//第一个参数表示HTTP请求的方式//第二个参数表示get请求的连结//第三个表示同步还是异步,true表示是异步xmlHttpRequest.open("get","servlet/aykjaservlet?username=" + encodeURI(username),true);         //同步方式下要在这里占停,等待数据发送回来          xmlHttpRequest.send(null);/**以下是POST方式xmlHttpRequest.onreadystatechange = callbacks;//回调函数xmlHttpRequest.open("POST","ProcessServlet",true);//指定POST方式提交 xmlHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //设置头信息xmlHttp.send("username="+encodeURI(username)); //发送的时候传的参数*/}function callbacks(){//判断对象交互状态是否完成,完成了等于4//一定这个值发生变化就会调用这个回调函数if(xmlHttpRequest.readyState == 4){//判断HTTP交互是完成,完成了等于200//404表示没有找到if(xmlHttpRequest.status == 200){//返回的值xml和textvar responseText = xmlHttpRequest.responseText;$("#result").html(responseText);/**以下是从服务器获得XMLvar domObj = xmlHttpRequest.responseXML;//获得DOM对象var messageNode = domObj.getElementsByTagName("message");//获得节点var textNode = messageNode.firstChild;//获得文本结点$("#result").html(textNode.nodeValue);//取值,并显示到HTML中服务器端一定要设置response.setContentType("text/xml;charset=utf-8");*/}}}

综上,只有是POST方法时,才能传递URL+参数外的数据,XHR明显是考虑到了这一点。当send的数据存在时,自动使用POST。
http://www.iteye.com/topic/221344

XMLHttpRequest详解
http://www.iteye.com/topic/199990
页: [1]
查看完整版本: AJAX原始的GET和POST请求方式