Ajax (原理 +实践)

Ajax (原理 +实践)

Asynchronous javaScript And Xml: 异步的javaScript 和 XML
AJAX是一种交互方式,异步加载,客户端和服务器的数据交互更新在局部页面的技术,不需要刷新整个页面

优点:
1、局部刷新,效率更高
2、用户体验更好

基于jQuery的Ajax

<html>
<head>
    <title>Title</title>
    <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
    <script>
        $(function(){//该函数默认最后执行即该页面对应的标签都包含
            var btn = $("#btn");
            btn.click(function(){
                $.ajax({
                    url:"/Ajax",
                    type:'post',//相当于用post提交
                    dataTyp:'text',
                    success:function(data){
                        alert(data);
                        var text = $('#t1');
                        text.before(data+"<br/>");
                    }//还有error,complete
                })
            });
        })
    </script>
</head>
<body>
<input id="t1" type="text" />
<input id = "btn" type="button" >
</body>
</html>

不能用表单提交请求,改用jQuery方式动态绑定事件来提交

Servlet不能跳转到Jsp(若跳转Ajax中获取的data就为跳转的页面),只能用数据进行返回

package com.Chase.My_Ajax;

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("/Ajax")
public class Ajax extends HttpServlet {

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.getWriter().write("Hello world");
    }
}
传统的Web数据交互 与 Ajax数据交互 的区别:
  1. 客户端请求的方式不同:
    传统:浏览器发送同步请求(form 、a)
    Ajax:异步引擎对象(由js创建)发送异步请求

  2. 服务器响应的方式不同:
    传统:响应一个完整Jsp页面(试图)
    Ajax:局部响应

  3. 客户端处理方式不同
    传统:需要等待服务器完成响应并且重新加载整个页面之后,用户才能进行后续的操作。
    Ajax:动态更新页面中的局部内容,不影响用户的其他操作。

Ajax原理

在这里插入图片描述

基于jQuery的Ajax语法

$.ajax({属性})
常用的属性参数:
url:请求的后端服务地址
type:请求方式,默认get
data:请求参数(xxxx/login.jsp ?name=Chase)
dataType:服务器返回的数据类型,text/json(实际开发中用的最多的两个)
success:请求成功的回调函数
error:请求失败的回调函数
complete:请求完成的回调函数(无论成功或者失败,都会调用)

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


对象实体(User)

package 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;
    }
}

login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script type="text/javascript" src="js/jquery-3.3.1.min.js"></script>
    <script>
        console.log($)
        $(function(){
            var btn = $("#btn");
            btn.click(function(){
                $.ajax({

                    url:"/test",
                    type:'post',
                    dataType:'json',//改为JSON格式
                    success:function(data){
                        alert(data.id);
                        var text = $('#t1');
                        text.before(data+"<br/>");
                    },
                    error:function(){
                        alert("xxx");
                    }
                })
            });
        })
    </script>
</head>
<body>
<input id="t1" type="text" />
<input id = "btn" type="button" >
</body>
</html>

Json_Servlet

@WebServlet("/test")
public class TestServlet extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        User user = new User(555,"看啥",150.0);
        JSONObject jsonObject = JSONObject.fromObject(user); //json对象,需要导入json包
        resp.getWriter().write(jsonObject.toString());
    }
}
本文素材来源于网上视频 + 手动操作,仅用于个人笔记,如有侵权请联系删除
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值