Ajax 与 JQuery 笔记

news/2024/7/10 23:13:56 标签: ajax, jquery, javascript, java

AJAX

全局刷新 和 局部刷新
异步对象(XMLHttpRequest)
——readyState属性
——status属性
5个实现步骤
同步与异步

JQuery

DOM对象与JQuery对象
选择器
过滤器
——表单属性过滤器
函数
事件
JQuery 与 Ajax

实例演示

AJAX

  • 出现时间——2003年
  • Asynchronous JavaScript and XML
    (异步的JavaScript和XML)
    JavaScript:用于更新dom对象,更新页面
    XML:传输数据的格式(已经被JSON替代了)

全局刷新 和 局部刷新

全局刷新:浏览器重新渲染 页面
局部刷新:在浏览器内部,发起请求,改变部分页面

异步对象(XMLHttpRequest)

  • 现浏览器内都内建了 XMLHttpRequest 对象,使用JavaScript可以直接创建

readyState属性

  • 表示请求的状态变化
0创建异步对象(现在基本用不到了)
1初始化异步请求对象,xmlHttp.open()
2发送请求,xmlHttp.send()
3接受数据
4读取数据

status属性

  • 表示网络请求状况(Http状态码)

open()方法

javascript>javascript">xmlHttp.open(请求方式get|post,请求地址或servlet对象,
				同步|异步请求(boolean默认为true,异步))

5个实现步骤

javascript>javascript">创建对象
var xmlhttp = new XMLHttpRequest();

绑定onreadystatechange事件
(当异步对象发起请求,获取数据都会触发该事件)
xmlhttp.onreadystatechange = function(){}

初始化异步对象
xmlHttp.open();

使用异步对象发送请求
xmlHttp.send();

获取返回数据
var data = xmlHttp.responseText;

同步与异步

同步:需要等待Servlet对象处理完数据后继续执行其他代码(send()方法之后的代码)
异步:无需等待Servlet对象处理完数据,直接执行其他代码(send()方法之后的代码)

异步可以在其他代码中发送其他请求,使请求直接互相独立

JQuery

  • JavaScript的库
  • 可以兼容各种浏览器(包括IE)

DOM对象与JQuery对象

  • DOM对象就是JS对象,而JQuery语法表示的对象都是JQuery对象
  • JQuery对象都是DOM数组,默认操作数组中的全部成员

对象转换

DOM - > JQuery $(DOM对象)
JQuery - > DOM 使用下标形式

选择器

javascript>javascript">$("选择器字符串")

选择器字符串的格式和CSS选择器是相同的,如不清楚点击这里查看CSS选择器

表单选择器

javascript>javascript">$(":text");		选择所有type:text 的表单标签(与是否有<from>标签无关)

过滤器

  • 对已经选择出来的对象,重新进行筛选
  • 过滤器不能单独使用,必须和选择器一同使用
javascript>javascript">$("选择器:first");	第一个
$("选择器:last");	最后一个
$("选择器:eq(n)");	第n个
$("选择器:lt(n)");	小于n的所有对象
$("选择器:gt(n)");	大于n的所有对象

表单属性过滤器

javascript>javascript">$(":text:enabled");	选择所有可用的 type:text 的表单标签
$("select>option:selected");	下拉列表中被选中的值

函数

val()

javascript>javascript">obj.val();		获取值
obj.val();		给所有DOM对象赋值

attr()

javascript>javascript">obj.attr("属性名");		获取属性值
obj.attr("属性名","值");	给属性赋值	

remove()

  • 将DOM对象及其子对象全部删除

empty()

  • 将子对象全部删除

append()

javascript>javascript">obj.append("<div>???</div>");DOM对象添加子对象

html()

javascript>javascript">obj.html();		获取DOM对象中的内容
obj.html();DOM对象中的内容赋值

each()

  • 可以对数组,json,DOM数组(JQuery对象)进行循环
javascript>javascript">$.each(循环内容,function(index,element){})
index为当前索引,element为当前索引对应的数组内容	

ready()

  • 在DOM对象创建好之后才会执行

事件

javascript>javascript">$(选择器).事件名称(处理函数)

JQuery事件名称就是JS事件名称去掉on字段

on() 绑定事件

javascript>javascript">$(选择器).on("事件名称",处理函数);

on方式 绑定 动态生成元素的事件

javascript>javascript">$(需要绑定的有效外层元素).on(绑定事件类型,需要绑定的JQuery对象,回调函数)

例:

javascript>javascript">$("#Element").on("click",$(".classname"),function(){});

JQuery 与 Ajax

javascript>javascript">$.ajax();		实现Ajax的核心函数
$.post();		使用post方式调用ajax请求(内部调用$.ajax()方法)
$.get();		使用get方式调用ajax请求(内部调用$.ajax()方法)

$.ajax()

  • 参数是一个json格式的参数

json中该包含的内容:

async:布尔值,表示同异步处理方式
contentType:传给服务器的数据类型,可以不写
data:表示参数和参数值,常用 json
dataType:表示期望从服务器获取的数据类型,可选xml,html,text,json
error:一个函数,请求错误时执行该函数
success:一个function(data),请求成功时执行该函数,data是服务器传回后经过Ajax处理后的数据
url:请求地址
type:请求方式,默认是Get,不区分大小写

javascript>javascript">$.get(url,data,function(resp),dataType);		使用get方式发送Ajax请求
$.post(url,data,function(resp),dataType);		使用post方式发送Ajax请求

————————————————————————————————

javascript>javascript">改变CSS样式
obj.css("属性名","值")

实例演示

实例内容:实现一个级联列表

前端代码

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <meta charset="utf-8">
    <title>级联菜单</title>
    <script type="text/javascript>javascript" src="jQuery-3.6.js"></script>
    <script>javascript>javascript">
      $(function(){
        $("#province").change(function(){
          var pro = $("select>option:selected")[0].value;
          var data = {province:pro};
          $.get("newProvince",data,function(resp){
            var select = $("select:last");
            select.empty();
            $.each(resp,function(i,option){
              select.append("<option>"+ option +"</option>");
            })
          },"json");
        })
      });
    </script>
    <style>
      select{
        width:200px;
      }
    </style>
  </head>
  <body>
    <select id="province">
      <option>河北</option>
      <option>河北</option>
      <option>山西</option>
      <option>辽宁</option>
      <option>吉林</option>
      <option>黑龙江</option>
      <option>江苏</option>
      <option>浙江</option>
      <option>安徽</option>
      <option>福建</option>
      <option>江西</option>
      <option>山东</option>
      <option>河南</option>
      <option>湖北</option>
      <option>湖南</option>
      <option>广东</option>
      <option>海南</option>
      <option>四川</option>
      <option>贵州</option>
      <option>云南</option>
      <option>陕西</option>
      <option>甘肃</option>
      <option>青海</option>
      <option>台湾</option>
      <option>内蒙古</option>
      <option>广西</option>
      <option>西藏</option>
      <option>宁夏</option>
      <option>新疆</option>
      <option>北京</option>
      <option>天津</option>
      <option>上海</option>
      <option>重庆</option>
      <option>香港</option>
      <option>澳门</option>
    </select>
    <select>
      <option>石家庄</option>
      <option>唐山</option>
      <option>秦皇岛</option>
      <option>邯郸</option>
      <option>邢台</option>
      <option>保定</option>
      <option>张家口</option>
      <option>承德</option>
      <option>沧州</option>
      <option>廊坊</option>
      <option>衡水</option>
    </select>
  </body>
</html>

后端代码

java">package Servlet;

import Tool.Mysql;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

public class newProvince extends HttpServlet {
    @Override
    public void doGet(HttpServletRequest request, HttpServletResponse response)
                    throws IOException, ServletException{
        String province = request.getParameter("province");
        String json = findCities(province);

        response.setContentType("text/html;charset=utf-8");
        PrintWriter pw = response.getWriter();
        pw.print(json);
    }

    private String findCities(String province) {
        Connection conn = Mysql.connection("province");
        String sql = "select * from city where province_number in(select number from province where name = ?);";
        PreparedStatement ps = Mysql.prepareStatement(conn,sql);
        Mysql.setString(ps,1,province);
        ResultSet rs = Mysql.executeQuery(ps);
        String json = "{";
        int num = 1;
        while(Mysql.next(rs)){
            json = json + "\"" + (num++) + "\":\"" + Mysql.getString(rs,"name") + "\",";
        }
        json = json.substring(0,json.length() - 1);
        json += "}";
        return json;
    }
}

实现效果
在这里插入图片描述
在这里插入图片描述


http://www.niftyadmin.cn/n/1731633.html

相关文章

智能锁方案特点

智能锁方案将作为智能安防体系内的重要智能硬件产品&#xff0c;作为家居最常用和最便捷的进出通道关口&#xff0c;具有其它设备无法比拟的优势&#xff0c;将与其它安防产品聚合成一整套安防系统&#xff0c;并且接入更多的家庭智能应用场景。智能门锁的普及与智能家居的普及…

智能指纹锁方案

智能指纹锁方案&#xff0c;是一种针对传统门锁做出变革与进化的所开发出来的智能生活方案&#xff0c;相比较传统的机械锁&#xff0c;智能指纹锁更多的是将迎合人的需求&#xff0c;更加的智能方便&#xff0c;也更加的安全。打个比方来说就好比钓鱼与网鱼&#xff0c;前一个…

@王道考研_计算机网络第一章

计算机网络概念 计算机网络是互联的、自治的计算机集合 互联-互联互通 自治-无主从关系&#xff0c;各自独立 计算机网络的功能 数据通信资源共享分布式处理提高可靠性负载均衡 计算机网络的组成 计算机网络的分类 思维导图 标准化工作 RFC标准 Request For Comments 所有…

智能体重秤解决方案开发

智能体重秤方案&#xff0c;一种测量仪器&#xff0c;针对人体体重智能分析的仪器&#xff0c;相比传统的指针式体重秤&#xff0c;具有精度高、锁定显示、读数方便、体积小、重量轻等优势。这种智能体重秤&#xff0c;由于其测量的数据精准和价格便宜&#xff0c;面向的也不仅…

Apache Doris (十七) :Doris分区和分桶3-分桶及建议

​​​目录 一、分桶Bucket ​​​​​​​二、分区和分桶数量和数据量的建议 进入正文之前&#xff0c;欢迎订阅专题、对博文点赞、评论、收藏&#xff0c;关注IT贫道&#xff0c;获取高质量博客内容&#xff01; 一、分桶Bucket Doris数据表存储中&#xff0c;如果有分区&…

Chapter Two Hopes of Agnes Grey

As we process our reading we shall find that Agnes had hopes each time on what her future life should be. Determined by her certain characteristics, each hope of Agnes was doomed to their destinations.

智能锁方案——什么是智能锁?

智能锁是区别传统机械锁来说的&#xff0c;锁具本身更加安全、操作管理更加智能便捷。      一、智能锁的特点      智能锁改造了传统锁具的制作工艺和结构&#xff0c;使之更加安全;将物联网技术应用在门锁上&#xff0c;省去了传统开门时繁琐的步骤&#xff0c;使得开…

@王道考研_计算机网络第二章

物理层 通信方式 数据传输方式 码元 速率&#xff0c;波特&#xff0c;带宽 传播速率和传输速率是不一样的 传输速率也叫发送速率&#xff0c;是将数据从主机发送到链路的速率 基带信号 与 宽带信号 编码 与 调制 数字数据 -> 数字信号 六种编码方式 非归零编码 归零编码…