Ajax的一点理解

来源:互联网 发布:张健 网络空间 编辑:程序博客网 时间:2024/05/14 01:31

首先来个简单的示例,从W3school上看到的。

<html>
<body>

<script type="text/javascript">

function ajaxFunction()
{
var xmlHttp;

try
    {
   // Firefox, Opera 8.0+, Safari
    xmlHttp=new XMLHttpRequest();
    }
catch (e)
    {

  // Internet Explorer
   try
      {
      xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
      }
   catch (e)
      {

      try
         {
         xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
         }
      catch (e)
         {
         alert("您的浏览器不支持AJAX!");
         return false;
         }
      }
    }

    xmlHttp.onreadystatechange=function()
      {
      if(xmlHttp.readyState==4)
        {
         document.myForm.time.value=xmlHttp.responseText;
        }
      }
    xmlHttp.open("GET","/TestServlet?name=Jordan&id=123456",true);
    xmlHttp.send(null);

}
</script>

<form name="myForm">
用户: <input type="text" name="username" onkeyup="ajaxFunction();" />
时间: <input type="text" name="time" />
</form>

</body>
</html>

这个页面是简单的Ajax访问后台服务,

先构造跨浏览器的xmlHttp对象,然后通过xmlHttp.open("GET","/TestServlet?name=Jordan&id=123456",true);方式将数据传递到后台。类似表单提交,只不过需自己添加数据到url中,以?的方式。

后台可以通过reques.getParameter("name")的方式获取传递过来的参数,处理,然后将结果返回。

客户端通过xmlHttp.onreadystatechange的状态判断处理的状态,然后做相应的动作。

详情参考:http://www.w3school.com.cn

 

这是最简单的方式,但是当前台需要传递的数据量特别大的时候,用url加问号的方式(/TestServlet?para=&para1=&para2=...)传递数据就显得比较困难了,因为毕竟url的长度是有限制的。而且还有可能出现中文乱码等问题。

个人认为解决方法:

1、先将大量待传输的数据构造成xml的格式

2、xmlHttp.send(xml)的方式发送到后台、其中发送方式改为Post。(xmlHttp.open("POST","",""))

3、后台通过BufferedReader br=request.getReader();  的方式获取流

4、构建专门的处理方法,用于解析xml。提取所需数据。

5、处理返回。

原创粉丝点击