Ajax的三种实现及JSON解析

摘要:
importjava.io.PrintWriter;charset=utf-8“);PrintWriterout=response.getWriter();Stringname=request.getParameter(”name“);Stringage=request.get Parameter(“age”);out.print(”{“name”;

本文为学习笔记,属新手文章,欢迎指教!!

本文主要是比较三种实现Ajax的方式,为以后的学习开个头。

准备:

1、  prototype.js

2、  jquery1.3.2.min.js

3、  json2.js

后台处理程序(Servlet),访问路径servlet/testAjax:

package ajax.servlet;  
  
import java.io.IOException;  
import java.io.PrintWriter;  
  
import javax.servlet.ServletException;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
  
/** 
 * Ajax例子后台处理程序 
 * @author bing 
 * @version 2011-07-07 
 * 
 */  
public class TestAjaxServlet extends HttpServlet {  
    public void doGet(HttpServletRequest request, HttpServletResponse response)  
            throws ServletException, IOException {  
  
        response.setContentType("text/html;charset=utf-8");  
        PrintWriter out = response.getWriter();  
          
        String name = request.getParameter("name");  
        String age = request.getParameter("age");  
          
        System.out.println("{"name":"" + name + "","age":"" + age + ""}");  
        out.print("{"name":"" + name + "","age":" + age + "}");  
          
        out.flush();  
        out.close();  
    }  
    public void doPost(HttpServletRequest request, HttpServletResponse response)  
            throws ServletException, IOException {  
  
        doGet(request,response);  
    }  
  
}  
 

TestAjaxServlet接收两个参数:name和age,并返回一个以JSON格式编写的字符串。

前台页面参数输入界面:

<div id="show">显示区域</div>  
<div id="parameters">  
    name:<input id="name" name="name" type="text" /><br />  
    age:<input id="age" name="age" type="text" /><br />  
</div>  

一、prototype实现

<script type="text/javascript" src="prototype.js"></script>  
    <script type="text/javascript">  
        function prototypeAjax()  
        {         
        var url = "servlet/testAjax";//请求URL  
        var params = Form.serialize("parameters");//提交的表单  
      var myAjax = new Ajax.Request(  
  
        url,{  
            method:"post",// 请求方式   
            parameters:params, // 参数  
            onComplete:pressResponse, // 响应函数  
            asynchronous:true  
        });  
        $("show").innerHTML = "正在处理中...";  
        }  
        function pressResponse(request)  
        {  
        var obj = request.responseText; // 以文本方式接收  
        $("show").innerHTML = obj;  
        var objJson = request.responseText.evalJSON(); // 将接收的文本用解析成Json格式  
        $("show").innerHTML += "name=" + objJson['name'] + " age=" + objJson['age'];  
  
        }  
</script>  
<input id="submit" type="button" value="提交" onclick="prototypeAjax()" /><br />  

prototype的Ajax实现中,用evalJSON方法将字符串转换成JSON对象。

二、jquery实现

<script type="text/javascript" src="jquery-1.3.2.min.js"></script>  
<script type="text/javascript" src="json2.js"></script>  
<input id="submit" type="button" value="提交" /><br />  
<script type="text/javascript">  
        function jqueryAjax()     
        {     
            var user={"name":"","age":""};     
            user.name= $("#name").val();     
            user.age=$("#age").val();   
            var time = new Date();            
            $.ajax({     
                 url: "servlet/testAjax?time="+time,     
                 data: "name="+user.name+"&age="+user.age,     
                 datatype: "json",//请求页面返回的数据类型     
                 type: "GET",     
                 contentType: "application/json",//注意请求页面的contentType 要于此处保持一致     
                 success:function(data) {//这里的data是由请求页面返回的数据    
                 var dataJson = JSON.parse(data); // 使用json2.js中的parse方法将data转换成json格式   
                 $("#show").html("data=" + data + " name="+dataJson.name+"  age=" + dataJson.age);     
                 },     
                 error: function(XMLHttpRequest, textStatus, errorThrown) {     
                   $("#show").html("error");  
                 }     
           });     
        }  
       $("#submit").bind("click",jqueryAjax); // 绑定提交按钮  
 </script>  

刚接触jQuery,在json的处理上借助了json2.js。还请前辈们指教。。

三、XMLHttpRequest实现

<script type="text/javascript">  
        var xmlhttp;   
        function XMLHttpRequestAjax()   
        {  
            // 获取数据  
         var name = document.getElementById("name").value;   
             var age = document.getElementById("age").value;   
         // 获取XMLHttpRequest对象  
         if(window.XMLHttpRequest){  
            xmlhttp = new XMLHttpRequest();    
         }else if(window.ActiveXObject){   
            var activxName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];     
            for(var i = 0 ; i < activexName.length; i++){  
               try{  
                   xmlhttp = new ActiveXObject(activexName[i]);    
                   break;   
               }catch(e){}  
            }  
         }  
             xmlhttp.onreadystatechange = callback;  //回调函数  
             var time = new Date();// 在url后加上时间,使得每次请求不一样  
             var url = "servlet/testAjax?name="+name+"&age="+age+"&time="+time;  
             xmlhttp.open("GET",url,true); // 以get方式发送请求  
             xmlhttp.send(null);   // 参数已在url中,所以此处不需要参送  
        }       
        function callback(){     
           if(xmlhttp.readyState == 4){     
              if(xmlhttp.status == 200){ // 响应成功    
                  var responseText = xmlhttp.responseText;   // 以文本方式接收响应信息  
                  var userdiv = document.getElementById("show");  
                  var responseTextJson = JSON.parse(responseText); // 使用json2.js中的parse方法将data转换成json格式   
                  userdiv.innerHTML=responseText + " name=" + responseTextJson.name + " age=" + responseTextJson.age;  
              }  
           }          
        }  
</script>  
<input id="submit" type="button" value="提交" onclick="XMLHttpRequestAjax()" /><br />  

XMLHttpRequest的实现在json的处理上同样的也借助于json2.js。

Ajax的三种实现及JSON解析

免责声明:文章转载自《Ajax的三种实现及JSON解析》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇NPM修改默认全局安装路径vbs实现unicode和ascii的转化下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

生成公钥和私钥----OpenSSL和keytool

方法一:使用openssl生成rsa密钥对 密钥长度介于 512 - 65536 之间(JDK 中默认长度是1024),且必须是64 的倍数。密钥的常用文件格式有pem(文本存储)或者der(二进制存储)。 当使用Java API生成RSA密钥对时,公钥以X.509格式编码,私钥以PKCS#8格式编码。 RSA使用pkcs协议定义密钥的存储结构等内容 O...

select的限制

/*一、select实现并发服务器并发的两点限制 1、一个进能够打开的最大文件描述符限制。可以通过两种方式修改 ulimit -n :获取最大文件描述符个数 ulimit -n 2048:修改为2048个另外可以通过以下程序修改,利用 setrlimit 不能改父进程的限制,只能改当前进程和子进程能够打开的最大文件描述符限制   int getrlimit...

HTML往div中赋值

HTML中往div赋值 <div id="mazey">content</div>   使用JavaScript: var mazey=document.getElementById("mazey"); mazey.innerHTML=data;  使用jQuery: $("#mazey").html(data);  ...

基于WPF系统框架设计(2)-Fluent Ribbon之HelloWorld

Fluent/Ribbon是微软在其最新桌面操作系统Windows 7中使用的图形用户界面。 Windows平台的进化,伴随着系统图形界面的重新设计。从Windows XP到Windows Vista,最大的革新就是Windows Aero的引入。在Windows 7 中,Aero被保留下来。 但是,在未来,Windows 7的图形用户界面将朝着Offic...

Nginx使用Lua脚本加解密RSA字符串

本文主要介绍使用Lua脚本对采用RSA加密后的字符串进行解密的过程。 使用第三方类库lua-resty-rsa,参考地址:https://github.com/spacewander/lua-resty-rsa 下载并安装第三方依赖库 # Redis集群连接库依赖RSA加解密第三方依赖库[lua-resty-rsa],因此需要提前安装此第三方依赖库 #...

使用jxls技术导入Excel模版数据(转自其他博客)

第一步:先确定好Excel导入的格式以及各表格字段值的含义 第二步:定义好解析的XML--videoConfig.xml <?xml version="1.0" encoding="UTF-8"?> <workbook> <worksheet name="Sheet1"> <sectio...