Ajax

Ajax
  1. Ajax
  2. 传统的WEB数据交互VSAJAX 数据交互
  3. AJAX原理
  4. 基于jQuery的AJAX语法
  5. JSON

Ajax

  • Asynchronous JavaScript And XML:异步的 JavaScript 和 XML

  • AJAX 不是新的编程,指的是?种交互?式,异步加载,客户端和服务器的数据交互更新在局部??的 技术,不需要刷新整个??(局部刷新)

  • 优点:

    1、局部刷新,效率更?

    2、?户体验更好 基于 jQuery 的 A JAX

    <html>
    <head>
     <title>Title</title>
     <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
     <script type="text/javascript">
     $(function(){
     			var btn = $("#btn");
    			 	btn.click(function(){
     					$.ajax({
     						url:‘/test‘,
     						type:‘post‘,
     						data:‘id=1‘,
     						dataType:‘text‘,
     						success:function(data){
     							var text = $("#text");
     							text.before("<span>"+data+"</span><br/>");
     						}
     					});
     			});
     	})
     </script>
    </head>
    <body>
         <input id="text" type="text"/><br/>
         <input id="btn" type="button" value="提交"/>
    </body>
    </html>
    

    不能?表单提交请求,改? jQuery ?式动态绑定事件来提交。 Servlet 不能跳转到 JSP,只能将数据返回。

    package com.southwind.servlet;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    @WebServlet("/test")
    public class TestServlet extends HttpServlet {
         @Override
         protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
         		String id = req.getParameter("id");
         try {
         		Thread.sleep(3000);
         } catch (InterruptedException e) {
         		e.printStackTrace();
         }
         String str = "Hello World";
         resp.getWriter().write(str);
         }
    }
    

传统的WEB数据交互VS AJAX 数据交互

  • 客户端请求的?式不同:

    传统,浏览器发送同步请求 (form、a)

    AJAX,异步引擎对象发送异步请求

  • 服务器响应的?式不同:

    传统,响应?个完整 JSP ??(视图)

    AJAX,响应需要的数据

  • 客户端处理?式不同:

    传统:需要等待服务器完成响应并且重新加载整个??之后,?户才能进?后续的操作

    AJAX:动态更新??中的局部内容,不影响?户的其他操作

AJAX 原理

Ajax

基于jQuery的AJAX语法

$.ajax({属性})

常?的属性参数:

url:请求的后端服务地址

type:请求?式,默认

get data:请求参数

dataType:服务器返回的数据类型,text/json

success:请求成功的回调函数

error:请求失败的回调函数

complete:请求完成的回调函数(?论成功或者失败,都会调?)

JSON

JavaScript Object Notation,?种轻量级数据交互格式,完成 js 与 Java 等后端开发语?对象数据之间 的转换客户端和服务器之间传递对象数据,需要? JSON 格式。

package com.southwind.entity;
public class User {
         private Integer id;
         private String name;
         private Double score;
    public Integer getId() {
         return id;
    }
    public void setId(Integer id) {
         this.id = id;
    }
    public String getName() {
         return name;
    }
    public void setName(String name) {
         this.name = name;
    }
    public Double getScore() {
         return score;
    }
    public void setScore(Double score) {
         this.score = score;
    }
    public User(Integer id, String name, Double score) {
         this.id = id;
         this.name = name;
         this.score = score;
    	}
    }
    User user = new User(1,"张三",96.5);
        var user = {
         id:1,
         name:"张三",
         score:96.5
}
package com.southwind.servlet;
import com.southwind.entity.User;
import net.sf.json.JSONObject;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/test")
public class TestServlet extends HttpServlet {
     @Override
     protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
         User user = new User(1,"张三",96.5);
         //将 Java 对象转为 JSON 格式
         resp.setCharacterEncoding("UTF-8");
         JSONObject jsonObject = JSONObject.fromObject(user);
         resp.getWriter().write(jsonObject.toString());
     }
}
<html>
<head>
 <title>Title</title>
 <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
 <script type="text/javascript">
 $(function(){
     var btn = $("#btn");
     btn.click(function(){
     $.ajax({
     		url:‘/test‘,
     		type:‘post‘,
     		dataType:‘json‘,
     		success:function(data){
     			$("#id").val(data.id);
     			$("#name").val(data.name);
     			$("#score").val(data.score);
     			}
     		});
     	});
     })
     </script>
    </head>
    <body>
     编号:<input id="id" type="text"/><br/>
     姓名:<input id="name" type="text"/><br/>
     成绩:<input id="score" type="text"/><br/>
     <input id="btn" type="button" value="提交"/>
    </body>
</html>

原视频:https://space.bilibili.com/434617924?spm_id_from=333.788.b_765f7570696e666f

Ajax

上一篇:Mininet基本操作+1


下一篇:ES6系列---【promise中ajax封装函数】