AJAX

作者: G_慧慧 | 来源:发表于2019-01-14 13:10 被阅读0次

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

AJAX的开发流程

1.创建 XMLHttpRequest 对象

variable=new XMLHttpRequest();

2.向服务器发送请求

xmlhttp.open("GET","test1.txt",true);
xmlhttp.send();

3.服务器响应

document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

4.根据状态的改变会触发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>

相关文章

  • AJAX

    主要内容: ajax 是什么、原生ajax 写法和jQuery ajax写法。 AJAX 是什么 ajax,即As...

  • JavaScript进阶知识点--AJAX及JSON

    AJAX 关于 AJAX 什么是 AJAX AJAX 的全称是 Asynchronous JavaScript a...

  • HTML5权威指南 | 第五部分 高级功能

    三十二、使用AJAX(上) Ajax起步: 使用Ajax事件: Ajax请求的错误处理: 中止Ajax请求: 三十...

  • ajax学习笔记

    Ajax学习笔记 Ajax简介 1. Ajax是什么? Ajax : Asynochronous javascri...

  • AJAX

    一、简介 AJAX菜鸟教程 什么是 AJAX ? AJAX = 异步 JavaScript 和 XML。 AJAX...

  • js之AJAX复习

    异步交互和同步交互 什么是Ajax? Ajax的工作原理。 Ajax包含的技术: Ajax的缺陷: Ajax的核心...

  • 复习jQuery - ajax

    jQuery ajax - ajax() 方法 $.ajax({ url:'oo.php', ...

  • jQuery中Ajax请求的使用和四个步骤示例

    ajax() 方法用于执行 AJAX(异步 HTTP)请求,所有的 jQuery AJAX 方法都使用 ajax(...

  • ajax

    1、什么是ajax? 2、ajax的原理 3、ajax的核心对象 4、ajax的优点: ajax的缺点: 被jqu...

  • ajax

    Ajax 1 - 请求纯文本 Ajax 2 - 请求JSON数据 Ajax 3 - 请求Github接口 Ajax...

网友评论

      本文标题:AJAX

      本文链接:https://www.haomeiwen.com/subject/qymddqtx.html