封装自己的ajax类库

首先封装自己的 jQuery库

  1. 启发:css的元素选择器思想

  2. 简单的代码实现

    function jQuery(selector){
    
        if(typeof selector == "string"){
    if(selector.charAt(0) == "#"){
    //原先的dom对象还要留着,因为最终的实现还要用这些对象的方法去实现,我们无法完成
    //domObj为全局变量
    domObj = document.getElementById(selector.substring(1))
    //但是由于封装了新方法,所以原先的dom对象就暂时不能用了(调用不了我们自定义的方法),要返回自定义的jQuery对象
    return new jQuery()
    //如果要真正起到修改作用,必须用domObj,如果要调用我们自己扩展的方法必须用 jQuery对象
    //所以可行的方法是:在我们自定义的方法里操作原生的domObj对象
    }
    } if(typeof selector == "function"){
    window.onload = selector
    } this.html = function(innerData){
    domObj.innerHTML = innerData
    } this.click = function(fun){
    domObj.onclick = fun
    } //既可以取值,又可以改值
    this.val = function(v){
    if(v == undefined){
    return domObj.value
    }else{
    domObj.value = v
    }
    } this.change = function(fun){
    domObj.onchange = fun
    } $ = jQuery

封装自己的ajax请求

  1. 简单代码实现

    function jQuery(selector){
    
        if(typeof selector == "string"){
    if(selector.charAt(0) == "#"){
    //原先的dom对象还要留着,因为最终的实现还要用这些对象的方法去实现,我们无法完成
    domObj = document.getElementById(selector.substring(1))
    //但是由于封装了新方法,所以原先的dom对象就暂时不能用了(调用不了我们自定义的方法),要返回自定义的jQuery对象
    return new jQuery()
    }
    } if(typeof selector == "function"){
    window.onload = selector
    } this.html = function(innerData){
    domObj.innerHTML = innerData
    } this.click = function(fun){
    domObj.onclick = fun
    } this.val = function(v){
    if(v == undefined){
    return domObj.value
    }else{
    domObj.value = v
    }
    } this.change = function(fun){
    domObj.onchange = fun
    } /**
    * 有一些动态的数据不能写死
    * 动态的信息有:
    * 1. 请求的类型
    * 2. 请求的地址
    * 3. 是否异步
    * 4. 提交的数据
    */
    jQuery.ajax = function(jsonArgs) {
    var method = jsonArgs.type.toUpperCase()
    var xhr = new XMLHttpRequest()
    //发送ajax请求,将文本框里的数据提交至后端
    xhr.onreadystatechange = function () {
    if (this.readyState == 4) {
    if (this.status == 200) {
    var jsonObj = JSON.parse(this.responseText)
    jsonArgs.callBack(jsonObj)
    } else {
    alert("异常状态码: " + this.status)
    }
    }
    }
    if (method == "POST") {
    xhr.open(method, jsonArgs.url, jsonArgs.async)
    xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded")
    xhr.send(jsonArgs.data)
    }
    if (method == "GET") {
    jsonArgs.data = "?" + jsonArgs.data
    xhr.open(method, jsonArgs.url + jsonArgs.data, jsonArgs.async)
    xhr.send()
    }
    }
    } $ = jQuery new jQuery()
  2. 调用的代码

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <title>全面测试jQuery类库</title>
    <meta charset="UTF-8">
    </head>
    <body>
    <script src="/ajax/js/jQuery-1.0.0.js"></script>
    <script>
    $(function(){
    $("#btn").click(function (){
    $.ajax({
    type : "POST",
    data : "username=" + $("#username").val(),
    async : true,
    url : "/ajax/ajaxRequest10",
    callBack : function(json){
    $("#the-div").html(json.name)
    //自定义回调函数,个性化的处理后端返回的数据
    }
    })
    })
    })
    </script>
    <input type="text" id="username">
    <input type="button" id="btn" value="点击回显数据">
    <div id="the-div"></div>
    </body>
    </html>

ajax02_封装自己的jQuery库和ajax请求的更多相关文章

  1. 关于JQuery中的ajax请求或者post请求的回调方法中的操作执行或者变量修改没反映的问题

    前段时间做一个项目,而项目中所有的请求都要用jquery 中的ajax请求或者post请求,但是开始处理一些简单操作还好,但是自己写了一些验证就出现问题了,比如表单提交的时候,要验证帐号的唯一性,所以 ...

  2. JavaScript原生封装ajax请求和Jquery中的ajax请求

    前言:ajax的神奇之处在于JavaScript 可在不重载页面的情况与 Web 服务器交换数据,即在不需要刷新页面的情况下,就可以产生局部刷新的效果.Ajax 在浏览器与 Web 服务器之间使用异步 ...

  3. jquery中的ajax请求到php(学生笔记)

    首先ajax的基本语法基础.(必须得引入一个jquery文件,下面的例子展示用了网上的jquery文件,要联网.) 2.请求成功(复制代码运行观察效果) <!DOCTYPE html> & ...

  4. jquery版本的ajax请求

    首先引入 <script src="https://code.jquery.com/jquery-3.6.0.js"></script>   $ 和 jqu ...

  5. Jquery progressbar通过Ajax请求获取后台进度演示

    项目源代码下载:http://download.csdn.net/detail/nuptboyzhb/6262253 1.简介 本文主要演示Jquery progressbar的进度条功能.js通过a ...

  6. 论如何把JS踩在脚下 —— JQuery基础及Ajax请求详解

    一.什么是JQuery? JQuery是一种JavaScript框架,是一堆大神搞出来的能够让前端程序猿敲更少代码.实现更多功能的工具(在此,跪谢各位JQuery开发大大们!!!).JQuery的使用 ...

  7. jQuery选择器,Ajax请求

    jQuery选择器: $("#myELement") 选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myElement所以得到的是唯一的元素 $( ...

  8. jquery中的ajax请求用法以及参数详情

    url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 ...

  9. Jquery监听AJAX请求

    .ajaxComplete() 当Ajax请求完成后注册一个回调函数.这是一个 AjaxEvent. .ajaxError() Ajax请求出错时注册一个回调处理函数,这是一个 Ajax Event. ...

随机推荐

  1. LeetCode数组刷题——448、48、240、769

    1.[LeetCode448]:448. 找到所有数组中消失的数字 题目分析: 1-n之间有重复的,有没出现的,有出现一次.使用hashmap,空间复杂度为O(n) 方法一:哈希表,但是空间复杂度超过 ...

  2. scrapy框架第二天

    1.scrapy数据分析 2.scrapy持久化存储 3.全站数据爬取 4.请求传参  +   五大核心组件 - 创建scrapy工程 scrapy startproject ProName - 切换 ...

  3. form表单与CSS选择器和样式操作

    form表单 """获取前端用户数据并发送给后端服务器""" <form action=""></fo ...

  4. django-rest-framework 基础四 过滤、排序、分页、异常处理

    django-rest-framework 基础四 过滤.排序.分页.异常处理 目录 django-rest-framework 基础四 过滤.排序.分页.异常处理 1. 过滤 1.1 内置过滤类 1 ...

  5. 使用WebDriverManager实现自动获取浏览器驱动程序

    原理: 自动到指定的地址下载相应的浏览器驱动保存到缓存区 ~/.cache/selenium 痛点: 解决因Chrome浏览器升级,driver需要同步升级,要重新下载驱动的问题 区别: 传统方式 需 ...

  6. Mybatis-Plus乐观锁Version

    实现原理 取出记录时,获取当前version更新时,带上这个version执行更新时, set version = newVersion where version = oldVersion如果ver ...

  7. Golang可重入锁的实现

    Golang可重入锁的实现 项目中遇到了可重入锁的需求和实现,具体记录下. 什么是可重入锁 我们平时说的分布式锁,一般指的是在不同服务器上的多个线程中,只有一个线程能抢到一个锁,从而执行一个任务.而我 ...

  8. Java面试宝典学习笔记【2020】

    Java面试题总结 一.Java基础 1)Java有没有goto? goto是C语言中的,通常与条件语句配合使用,可用来实现条件转移, 构成循环,跳出循环体等功能.Java保留了这个关键字但是没有使用 ...

  9. Cpp的赋值和变量说明

    一命名方式: 1.关键字不能作为变量名 int int;是错误的电脑会提示为非法取名 上面的示例是错误示范,而错误提示告诉了为什么错了记住这错误提示了: 2.的二个知识点: 变量名是分大小写的: in ...

  10. django框架5

    内容概要 模板语法之过滤器(类似于内置函数) 模板语法之标签(类似于流程控制) 自定义过滤器.标签.inclusion_tag 模板的导入 模板的继承 注释语法补充 前期数据准备(测试环境搭建) al ...