AJAX

AJAX = 异步 JavaScript 和 XML。
AJAX 是一种用于创建快速动态网页的技术。
通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。
有很多使用 AJAX 的应用程序案例:新浪微博、Google 地图、开心网等等。

AJAX的开发流程

  1. 创建 XMLHttpRequest 对象
variable=new XMLHttpRequest();
  1. 向服务器发送请求
xmlhttp.open("GET","test1.txt",true);
xmlhttp.send();
  1. 服务器响应
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
  1. 根据状态的改变会触发onreadystatechange 事件
xmlhttp.onreadystatechange=function()
 {
if (xmlhttp.readyState==4 && xmlhttp.status==200)
 {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
}
}

Json的转换工具

概述

JSON是一种轻量化的数据传输格式,在各种场景都有运用。比如在ajax中,服务端的数据一般通过JSON字符串的格式传输给前端,前端ajax引擎自动将JSON字符串转化为JS对象(需要将ajax的返回内容格式设置为"json")。那么此时我们在后台服务器中就需要将封装好的JavaBean对象转化为JSON格式字符串来传输给前台ajax引擎,此时使用JSON转化工具将大大简化我们代码量。
首先我们需要明确的是什么是JSON格式
JSON格式有两种,一种是对象格式,另一种是数组格式(也可以叫集合)。

对象格式:{"key1":value1,"key2":value2......}
数组形式:[{对象1},{对象2}....]
  1. GSON转换工具
  2. JSONLib转换工具:JSONArray JSONObject
  3. Jackson转换工具
    注意:

[JSON字符串如何转化成对象?]

解析
  1、定义:是指将符合 JSON 语法规则的字符串转换成对象的过程。
  2、不同的编程语言都提供了解析 JSON 字符串的方法,在这里主要讲解 JavaScript 中的解析方法。主要有三种:
  1)- 使用 eval()
  2)- 使用 JSON.parse()
  3)- 使用第三方库,例如 JQuery 等

eval()

1、eval() 函数的参数是一个字符串,其作用是直接执行其中的 JavaScript 代码。
  2、eval() 能够解析 JSON 字符串。从这里也可以看得出,JSON 和 JavaScript 是高度嵌合的。
  3、但是,现在已经很少直接使用 eval() 来解析了,如果您的浏览器版本真的是很旧,可能才需要这个方法。此外,eval() 是一个相对危险的函数,因为字符串中可能含有未知因素。在这里,作为学习,还是要知道这也是一种方法。
  4、请注意 eval() 的参数,在字符串两旁加了括号,这是必须的,否则会报错。
  5、因为 JSON 字符串是被大括号(“{}”)包围的,直接放到 eval() 会被当成语句块来执行,因此要在两旁加上括号,使其变成表达式。

Jquery Ajax

使用jQuery+json+servlet动态取后台的list集合的数据。
后台Servlet
package com.cxl.servlet;  
  
import java.io.IOException;  
import java.io.PrintWriter;  
import java.util.ArrayList;  
import java.util.List;  
  
import javax.servlet.ServletException;  
import javax.servlet.http.HttpServlet;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
  
import net.sf.json.JSONArray;  
import net.sf.json.JSONObject;  
  
import com.cxl.model.User;  
  
public class UserServlet extends HttpServlet {  
  
    /** 
     *  
     */  
    private static final long serialVersionUID = 1L;  
  
    public void doGet(HttpServletRequest request, HttpServletResponse response)  
            throws ServletException, IOException {  
        this.doPost(request, response);  
    }  
  
    public void doPost(HttpServletRequest request, HttpServletResponse response)  
            throws ServletException, IOException {  
  
        response.setContentType("text/html;charset=UTF-8");  
        //禁用缓存,确保网页信息是最新数据  
        response.setHeader("Pragma","No-cache");      
        response.setHeader("Cache-Control","no-cache");      
        response.setDateHeader("Expires", -10);  
        PrintWriter out = response.getWriter();       
        System.out.println(System.currentTimeMillis());  
        List<User> users = new ArrayList<User>();  
        User user = new User();  
        user.setUsername("cxl");  
        user.setPassword("123");  
        User u = new User();  
        u.setUsername("lhl");  
        u.setPassword("1234");  
        users.add(user);  
        users.add(u);  
        //List转json数组格式  
        JSONArray jsonArray = JSONArray.fromObject(users);  
        System.out.println(jsonArray.toString());  
        /* 
          打印结果为:[{"password":"123","username":"cxl"} 
                       ,{"password":"1234","username":"lhl"}] 
        */  
        out.print(jsonArray.toString());  
        /* 
          用json对象格式返回数据 
          JSONObject jsonObj = new JSONObject(); 
          jsonObj.put("users", users); 
          System.out.println(jsonObj); 
          打印结果:{"users":[{"password":"1234","username":"cxl"} 
                              ,{"password":"1234","username":"lhl"}]} 
          out.print(jsonObj); 
        */  
        out.flush();  
        out.close();  
    }  
}  
Js代码
//jQuery(function{})或$(document).ready(function(){})或$(function(){});  
jQuery(function() {  
    setTimeout(getUserInfo,0);//执行getUserInfo函数一次    
    function getUserInfo() {  
        $.post("http://localhost:8080/jQueryDemo/servlet/UserServlet",null,  
            function call(data){  
                var str = "";  
                str = "<table><tr><th>用户名</th><th>密码</th></tr>";            
                //循环遍历json数组格式的数据    
                $.each(data, function(index, item) {  
                    str += "<tr><td>" + item.username + "</td><td>"   
                            + item.password + "</td></tr>";  
                 });  
                /* 
                      循环遍历json对象格式的数据 
                  $.each(data.users, function(index, item) { 
                      str += "<tr><td>" + item.username + "</td><td>“ 
                             + item.password + "</td></tr>"; 
                 }); 
                */  
                str += "</table>";  
                //把数据展现在jsp页面上  
                $("#userInfo").html(str);  
        },"json");  
    };  
    //动态取后台数据  
    setInterval(getUserInfo, 10000);//每隔10秒钟执行一次getUserInfo函数  
  });  
页面(Jsp)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
<%  
String path = request.getContextPath();  
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
%>  
  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
  <head>  
    <base href="<%=basePath%>">  
      
    <title>My JSP 'index.jsp' starting page</title>  
    <meta http-equiv="pragma" content="no-cache">  
    <meta http-equiv="cache-control" content="no-cache">  
    <meta http-equiv="expires" content="0">      
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
    <meta http-equiv="description" content="This is my page">  
    <!--  
    <link rel="stylesheet" type="text/css" href="styles.css">  
    -->  
    <script type="text/javascript" src="<%=request.getContextPath() %>/js/jquery-1.7.min.js"></script>  
    <script type="text/javascript" src="<%=request.getContextPath() %>/js/userInfo.js"></script>  
  </head>  
    
  <body>  
    <center>  
        <h2>用户信息</h2>  
        <div id="userInfo"></div>  
    </center>  
  </body>  
</html>  
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容