三种实现Ajax的方式

本文主要是比较三种实现Ajax的方式 

1、  prototype.js
2、  jquery1.3.2.min.js
3、  json2.js 

Java代码  收藏代码
后台处理程序(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格式编写的字符串。 

前台页面参数输入界面:
Java代码  收藏代码
<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实现
Java代码  收藏代码
<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实现 

Java代码  收藏代码
<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>  

三、XMLHttpRequest实现 

Java代码  收藏代码
<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 />

  

时间: 2024-10-17 13:50:42

三种实现Ajax的方式的相关文章

Request三种获取数据的方式

今天在做ajax请求后台代码时,发现ajax的方法都对,但就是请求不了后台代码,后来在同事帮助下才发现前台定义了两个相同参数导致请求出错. 下面记录一下request三种获取数据的方式: 1. Request.QueryString: 该方法主要是获取页面路径URL的参数: 2. Request.Form:该方法主要是以post请求方式获取报文体的参数: 3. Request.param:包含上面两种方式,它会在QueryString,Form,ServerVariable中都搜索一遍: 而我今

Objective-C:三种文件导入的方式以及atomic和nonatomic的区别

一.三种文件导入的方式比较: 类的前项声明@class.import.include: 1.采用@class 类名的方式,它会告诉编译器有这么一个类,目前不需要知道它内部的实例变量和方法是如何定义的,后面会告你,现在你就可以直接使用它,节约程序编译时间: 2.采用import方式,能避免重复导入同一类,它导入的不但这个类的所有的内容,而且使用它之前,编译器必须先对类的所有内容走一遍,就是先做预编译处理,这样比较耗费程序编译的时间. 3.采用include方式,不能避免重复导入的问题,但是它用在C

Objective-C:三种文件导入的方式比较

三种文件导入的方式比较: 类的前项声明@class.import.include: 1.采用@class 类名的方式,它会告诉编译器有这么一个类,目前不需要知道它内部的实例变量和方法是如何定义的,后面会告诉你,现在你就可以直接使用它,节约程序编译时间: 2.采用import方式,能避免重复导入同一类,它导入的不但这个类的所有的内容,而且使用它之前,编译器必须先对类的所有内容走一遍,就是先做预编译处理,这样比较耗费程序编译的时间. 3.采用include方式,不能避免重复导入的问题,但是它用在C/

三种Tomcat集群方式的优缺点分析

三种Tomcat集群方式的优缺点分析 2009-09-01 10:00 kit_lo kit_lo的博客 字号:T | T 本文对三种Tomcat集群方式的优缺点进行了分析.三种集群方式分别是:使用DNS轮询,使用Apache R-proxy方式,以及使用Apache mod_jk方式. AD:WOT2014课程推荐:实战MSA:用开源软件搭建微服务系统 Tomcat集群方式有三种,分别是: 1.使用DNS轮询. 2.使用Apache R-proxy方式. 3.使用Apache mod_jk方式

7.31(三种格式化输出的方式,基本运算类型,if循环)

复习 数据类型基础 变量是用来描述世间万物变化状态的,但是万物的状态是有多种的,要用不同的数据类型来表示 五大数据类型(数字类型,字符串,列表,字典,布尔类型) 数字类型又包括整型和浮点型 定义方式:age = 18:age = int(18):int('18') age = 18,age1 = 19 print(age,age1) age,age1 = 18.19 作用:描述年龄/id号等 使用方法:+-*/%//** 如果使用log方法,导入import cmath库 浮点型 定义方式:sa

Android开发——三种活动跳转方式

Android开发——三种活动跳转方式 1. 点击控件跳转 这里用 Button 举例,在布局文件中创建 Button 按钮,在再源码文件中写入活动跳转代码: Button button1 = (Button)findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(MainAc

三种实现AJAX的方法以及Vue和axios结合使用的坑

前言 之前曾经想自己写一个天气的App,并找到了一个免费的天气数据接口的服务商--和风天气,当时也不懂怎么发HTTP请求,而且也只会用Java语言,看到官方文档里面有一个Java代码示例,就复制了一下在自己电脑上调通.一开始是在控制台输出天气数据的,后来用Swing写了一个图形化界面并放置数据,但也就到此为止了,并没有什么实用价值. 最近学习了一下前端的相关知识,发现像和风天气这样的数据接口,根本不需要用到像Java这样的大型语言,只需在网页端用Javascript发HTTP请求就能获得JSON

三种标准库链接方式

Linux 应用程序因为 Linux 版本的众多与各自独立性,在工程制作与使用中必须熟练掌握如下两点才能有效地工作和理想地运行.1.Linux 下标准库链接的三种方式(全静态 , 半静态 (libgcc,libstdc++), 全动态)及其各自利弊.2.Linux 下如何巧妙构建 achrive(*.a),并且如何设置链接选项来解决 gcc 比较特别的链接库的顺序问题.全静态:1.-static -pthread -lrt -ldl2.不会发生应用程序在 不同 Linux 版本下的标准库不兼容问

三种实现servlet的方式有什么区别?--转载

著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:郭无心链接:https://www.zhihu.com/question/38971252/answer/79165562来源:知乎 首先明确,Servlet并不是专门用于处理Http请求的.然后再说三种方式的联系和区别.1)原生Servlet接口 package javax.servlet; import java.io.IOException; public interface Servlet { public voi