比较Ajax的三种实现及JSON解析_AJAX相关

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

准备:

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

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

Java代码

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格式编写的字符串。

前台页面参数输入界面:

Html代码 

<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实现

Html代码

<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实现

Html代码 

<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实现

Html代码 

<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 /> 

ps:字符串转换成JSON的三种方式

采用Ajax的项目开发过程中,经常需要将JSON格式的字符串返回到前端,前端解析成JS对象(JSON )。
ECMA-262(E3) 中没有将JSON概念写到标准中,但在 ECMA-262(E5) 中JSON的概念被正式引入了,包括全局的JSON对象和Date的toJSON方法。

1,eval方式解析,恐怕这是最早的解析方式了。

function strToJson(str){
   var json = eval('(' + str + ')');
   return json;
} 

记得str两旁的小括号哦。

2,new Function形式,比较怪异哦。

function strToJson(str){
  var json = (new Function("return " + str))();
  return json;
} 

IE6/7中当字符串中含有换行(\n)时,new Function不能解析,但eval却可以。

3,使用全局的JSON对象。

function strToJson(str){
  return JSON.parse(str);
} 

目前IE8(S)/Firefox3.5+/Chrome4/Safari4/Opera10 已实现了该方法。

使用JSON.parse需严格遵守JSON规范,如属性都需用引号引起来,如下

var str = '{name:"jack"}';
var obj = JSON.parse(str); // --> parse error 

name没有用引号引起来,使用JSON.parse所有浏览器中均抛异常,解析失败。而前两种方式则没问题。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索ajax实现
, ajax_json解析
ajax怎么解析json
ajax 返回json 解析、ajax json 解析、ajax解析json数据、ajax如何解析json数据、ajax解析json数组,以便于您获取更多的相关知识。

时间: 2024-08-30 21:43:57

比较Ajax的三种实现及JSON解析_AJAX相关的相关文章

jQuery中ajax的4种常用请求方式介绍_AJAX相关

AJAX 是一种与服务器交换数据的技术,可以在补充在整个页面的情况下更新网页的一部分. jQuery中ajax的4种常用请求方式: 1.$.ajax()返回其创建的 XMLHttpRequest 对象. $.ajax() 只有一个参数:参数 key/value 对象,包含各配置及回调函数信息.详细参数选项见下. 如果你指定了 dataType 选项,请确保服务器返回正确的 MIME 信息,(如 xml 返回 "text/xml"). 实例: 保存数据到服务器,成功时显示信息. $.aj

通过构造AJAX参数实现表单元素JSON相互转换_AJAX相关

ajax提交服务器数据, 整理一下转换方法. HTML: <form id="fm" name="fm" action=""> <input name="UserName" type="text" value="UserName1"/> </form> <input name="UserId" id="UserId&

分享ajax的三种解析模式

一.Ajax中的JSON格式 html代码: <html> <body> <input type="button" value="Ajax" id="btn"> <script> var btn = document.getElementById("btn"); btn.onclick = function(){ var xhr = getXhr(); xhr.open(&quo

Ajax的三种形式(开源项目)

ajax|项目   1 大大减少了服务器端和客户端的数据流量,不像submit-responce时代需要参杂大量的html脚本. 2 丰富了客户端的相应,例如表单子段的提示输入,数据验证.多级列表的实现.树桩菜单的动态加载等等 需要注意的事:Ajax设计时候一定要考虑用户界面事件触发的无序性.1 对一些有写操作的地方,要根据情况实行界面锁定功能,即提交完成前,不可以进行其他操作.2 任何操作都要给用户 Load... 这样的提示 Ajax的三种形式 1 最原始的XMLHTTPRepuest方式,

Asp.net mvc 2中使用Ajax的三种方式

在Asp.net MVC中,我们能非常方便的使用Ajax.这篇文章将介绍三种Ajax使用的方式,分别为原始的Ajax调用.Jquery.Ajax Helper.分别采用这三种方式结合asp.net mvc去实现一个史上最简单的留言板. 首先看一下原始的Ajax的调用的 定义CommentController,代码如下: public class CommentController : Controller { private IList<string> _comments = new List

一起谈.NET技术,Asp.net mvc 2中使用Ajax的三种方式

     在Asp.net MVC中,我们能非常方便的使用Ajax.这篇文章将介绍三种Ajax使用的方式,分别为原始的Ajax调用.Jquery.Ajax Helper.分别采用这三种方式结合asp.net mvc去实现一个史上最简单的留言板.     首先看一下原始的Ajax的调用的:      定义CommentController,代码如下: public class CommentController : Controller{private IList<string> _commen

AJAX机制详解以及跨域通信_AJAX相关

1.Ajax 1.1.Ajax简介   Ajax简介这一部分我们主要是谈一下ajax的起源,ajax是什么?因为这些是跟技术无关的.所以,大多细节都是一笔带过.   Ajax的起源? Ajax一词源于2005年 Jesse James Garrett发表的一篇题为"Ajax:A new Approach to Web Applications".他在这篇文       章中介绍了一种新技术,用他的话说,就是Ajax :Asynchronous JavaScript +XML的缩写.  

Ajax请求和Filter配合案例解析_AJAX相关

案例引入 现在有这样一个问题,就是在提交大片文字评论的时候,前台拿到数据之后给后台发送ajax请求,然后后台有一个防止SQL注入的Filter,这个Filter得到这个前台传过来的数据之后,进行合法性校验,如果没有校验成功,那么要跳转到error.jsp页面进行显示错误信息.现在让我们看看怎么实现这个需求. 思路一:请求转发实现 ajax请求 $.ajax({ method:'post', url:'servlet/DemoServlet', dataType:'json', data:{ 'u

springmvc 发送ajax出现中文乱码的解决方法汇总_AJAX相关

使用spingmvc,在JS里面通过ajax发送请求,并返回json格式的数据,从数据库拿出来是正确的中文格式,展示在页面上就是错误的??,研究了一下,有几种解决办法.  我使用的是sping-web-3.2.2,jar   方法一:   在@RequestMapping里面加入produces = "text/html;charset=UTF-8" @RequestMapping(value = "/configrole", method = RequestMet