IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Ajax-- -> 正文阅读

[JavaScript知识库]Ajax--

jQuery入门:

设计目的:

为了简化Javascript开发,第三方产商开发了JavaScript库

优点:

  1. jQuery是一个轻量级js库,使用简单
  2. jQuery最核心的是选择器,用于获取当前页面元素
  3. jQuery提供了大量高效方法,大幅度提升了速度

基础知识:

选择器表达式

$(“a”) 标签选择器 $(“a”).addClass(“heighlight”)对当前页面中所有的a标签增加heighlight类(css)
$(" * “)通配选择器 $(”*").removeClass(“heighlight”);移除当前页面中所有标签的heighlight类(css)
$("#id") id选择器
$(".class")类选择器
$(“div1,p”)组合选择器,对元素进行组合
方法添加css
removeclass("")移除所有css
addclass("")添加css

层叠选择器

$(“ancestor des”) 后代选择器
$(“ances>des”) 子选择器
$(“ances~des”) 兄弟选择器 选择之后的

属性选择器

$(“selse[att=value]”) 属性名等于属性值
$(“selse[att^=value]”) 属性值以什么开头匹配
( " s e l s e [ a t t ("selse[att ("selse[att=value]") 属性以什么结尾匹配
$(“selse[att *=value]”) 通配只要包含value值匹配

不经常用的位置选择器和表单选择器扩展知识

$(".myclass:first")第一个
$(“selse:last”)最后一个
$(“li:even”) 获取偶数位置的元素(从0开始)
$(“li:odd”)获取奇数位置的元素(从0开始)
$(“li:eq(2)”) 获取指定位置的元素(从0开始)

表单选择器

$(“sele:input”) 获取所有输入项(即所有表单元素)
$(“sele:password”) 密码框
$(“sele:text”) 文本
$(“sele:reset”) 重置按钮

jquery方法操作

attr(name|properties|key) 设置和获取元素属性
attr(name)只有一个参数就是获取 ,
attr(name,“www”)两个参数是设置 ,
如果一次性获取多个属性值,则只会返回第一个属于该标签或该类的属性值,如果一次性给多个标签设置值的时候则会对该标签下的所有该属性进行设置
removeAttr(name) 移除元素属性
eg:$(“a”).removeAttr(“href”);

操作元素的css样式

css()获取或设置匹配元素的样式属性
css(“color”)获取color属性
css(“color”,“red”)
css({设置多个,分隔}) eg:$(“a”).css({“color”:“red” , “font-size”:“bold” , “font-style”:“italic”})

addClass(“css类名”)为每个匹配的元素添加样式
addclass(“css类名 css2”) 多个类名
removeClass(“css类名”) 移除样式

设置元素内容方法

val(参数) 设置和获取输入项的值(获取或设置文本输入框的内容,当不写参数时代表获取文本框的输入内容)
text(参数) 获取和设置元素的纯文本 ,会将文本中的html标签进行转义,将文本原封不动的展示在界面中 (优先使用)
html(参数) 设置和获取元素内部的html 能跟实现再添加标签功能,不会进行转义

事件

on("click",function(){
   
   })
click(function(){
     
     }) 绑定事件的简写形式
等价
处理方法中提高了event

键盘按下 event遵守了w3c格式,
keypress(function(event){

})

Ajax入门:

创建XmlHttpRequest对象:
  1. XMLHttpRequest用于在后台与服务器交换数据,是AJAX的核心
  2. XMLHttpRequest并不是W3C的标准,不同浏览器的创建方式不同

最通用的做法

var xmlhttp
if(window.XMLHttpRequest)
{
//IE7+,Firefox,Chrome,Opera,Safari浏览器执行代码
xmlhttp = new XMLHttRequest();
}
else{
//IE6,IE5等老浏览器执行代码
xmlhttp = new ActiveXObject("Mircrosoft.XMLHTTP");
}

发送Ajax请求:

//true代表异步方式发送请求,false代表同步

xmlhttp.open("method:","url:","true")
xmlhttp.send()

处理服务器响应:

//异步状态
xmlhttp.onreadystatechange=function(){
    //响应已被接收且服务器处理成功才执行
   if(xmlhttp.readystate==4&&xmlhttp.status==200){
       //获取响应体的文本
       var string=xmlhttp.responceText;
       //使用JavaScript自带JSON将字符串转换为对象
       var json=JSON.parse(string);
       //对服务器结果进行处理
       document.getElementById("").innerHTML=json;
   }
}

//同步状态

 if(xmlhttp.readystate==4&&xmlhttp.status==200){
       //获取响应体的文本
       var string=xmlhttp.responceText;
       //使用JavaScript自带JSON将字符串转换为对象
       var json=JSON.parse(string);
       //对服务器结果进行处理
       document.getElementById("").innerHTML=json;
   }


xmlhttp.readyState属性说明XMLHttpRequest当前状态:
  • 值为0说明请求未初始化

  • 值为1说明服务器已建立连接

  • 值为2说明请求已经被接收

  • 值为3说明请求正在被处理

  • 值为4说明响应文本已经被接收

同步状态:
  1. 代码进入等待状态(事先在servlet中设置了Thread.sleep()的方法),数据不返回,程序不会向下执行即所谓的阻塞状态,在该状态下onreadystatechange事件将失效,
  2. 同步是发送一个请求,需要等待返回,然后才能够发送下一个请求,有个等待的过程
异步状态:
  1. 程序不会处于阻塞状态,依旧向下执行,数据返回时,通过触发onreadystatechange事件进行数据的获取和处理
  2. 异步是发送一个请求,不需要等待返回,随时可以再发送下一个请求,不需要等待。

jQuery对Ajax的支持

jQuery对Ajax进行封装,提供了$.ajax()方法
$.ajax(options)

options常用JSON对象 其中JSONP解决跨域访问问题

利用JSON对象来描述Ajax发送请求的相关细节,如图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-K7orxyyo-1637848795116)(C:\Users\张烈文\AppData\Roaming\Typora\typora-user-images\1588576055154.png)]

利用jQuery和Ajax实现二级联动例子:
//HTML代码:
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script type="text/javascript" src="js/jquery-3.5.0.js"></script>
    <script type="text/javascript">
       $(function () {
           $.ajax({
               "url": "/channel",
               "type": "GET",
               "data": "level=1",
               "dataType": "json",
               "success":function (json) {
                   for (var i = 0; i < json.length; i++) {
                       var ch = json[i];
                       //在当前选项卡下追加字符串
                       $("#lv1").append("<option value='" + ch.code + "'>" + ch.name + "</option>");

                   }

               }
           })
       })

        $(function () {
            $("#lv1").change(function () {
                var value = $(this).val();
                $.ajax({
                    "url": "/channel",
                    "type": "get",
                    
                    //当传入参数很多时,建议使用json数据格式传入参数
                    //写法二:"data":"level=2&parent="+value,
                    
                    "data":{"level":"2","parent":value},
                    "dataType": "json",
                    "success": function (json) {
                    //移除lv2子元素的option
                        $("#lv2>option").remove();
                        for (var i = 0; i < json.length; i++) {
                            var ch = json[i];
                            $("#lv2").append("<option>" + ch.name + "</option>");

                        }

                    }
                })
            })
        })

    </script>
</head>
<body>
<select id="lv1" style="width: 200px;height: 30px">
    <option selected="selected">请选择</option>
</select>


<select id="lv2" style="width: 200px;height: 30px">

</select>

</body>
</html>
//servlet
package com.Ray.ajax;

import com.alibaba.fastjson.JSON;

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;
import java.util.ArrayList;
import java.util.List;

@WebServlet("/channel")
public class ChannelServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String level = req.getParameter("level");
        String parent = req.getParameter("parent");
        List chlist = new ArrayList();
        if(level.equals("1")){
            chlist.add(new Channel("ai","前沿/区块链/人工智能"));
            chlist.add(new Channel("web", "前端/小程序/js"));

        } else if (level.equals("2")) {
            if (parent.equals("ai")) {
                chlist.add(new Channel("mico", "微服务"));
                chlist.add(new Channel("blockchain", "区块链"));
                chlist.add(new Channel("other", "。。。。"));
            } else if (parent.equals("web")) {
                chlist.add(new Channel("html","HTML"));
                chlist.add(new Channel("css", "CSS"));
                chlist.add(new Channel("other", "。。。。"));
            }
        }
        String json = JSON.toJSONString(chlist);
        resp.setContentType("text/html;charset=UTF-8");

        resp.getWriter().println(json);
    }


}

//实体类
package com.Ray.ajax;

public class Channel {
    private String code;
    private String name;

    public Channel() {

    }

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Channel(String code, String name) {
        this.code = code;
        this.name = name;
    }
}

etCode() {
return code;
}

public void setCode(String code) {
    this.code = code;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public Channel(String code, String name) {
    this.code = code;
    this.name = name;
}

}


  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-26 08:46:34  更:2021-11-26 08:48:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/21 4:14:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码