ajax02_封装自己的jQuery库和ajax请求
封装自己的ajax类库
首先封装自己的 jQuery库
- 启发:css的元素选择器思想 
- 简单的代码实现 - 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请求
- 简单代码实现 - 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()
 
- 调用的代码 - <!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请求的更多相关文章
- 关于JQuery中的ajax请求或者post请求的回调方法中的操作执行或者变量修改没反映的问题
		前段时间做一个项目,而项目中所有的请求都要用jquery 中的ajax请求或者post请求,但是开始处理一些简单操作还好,但是自己写了一些验证就出现问题了,比如表单提交的时候,要验证帐号的唯一性,所以 ... 
- JavaScript原生封装ajax请求和Jquery中的ajax请求
		前言:ajax的神奇之处在于JavaScript 可在不重载页面的情况与 Web 服务器交换数据,即在不需要刷新页面的情况下,就可以产生局部刷新的效果.Ajax 在浏览器与 Web 服务器之间使用异步 ... 
- jquery中的ajax请求到php(学生笔记)
		首先ajax的基本语法基础.(必须得引入一个jquery文件,下面的例子展示用了网上的jquery文件,要联网.) 2.请求成功(复制代码运行观察效果) <!DOCTYPE html> & ... 
- jquery版本的ajax请求
		首先引入 <script src="https://code.jquery.com/jquery-3.6.0.js"></script> $ 和 jqu ... 
- Jquery progressbar通过Ajax请求获取后台进度演示
		项目源代码下载:http://download.csdn.net/detail/nuptboyzhb/6262253 1.简介 本文主要演示Jquery progressbar的进度条功能.js通过a ... 
- 论如何把JS踩在脚下 —— JQuery基础及Ajax请求详解
		一.什么是JQuery? JQuery是一种JavaScript框架,是一堆大神搞出来的能够让前端程序猿敲更少代码.实现更多功能的工具(在此,跪谢各位JQuery开发大大们!!!).JQuery的使用 ... 
- jQuery选择器,Ajax请求
		jQuery选择器: $("#myELement") 选择id值等于myElement的元素,id值不能重复在文档中只能有一个id值是myElement所以得到的是唯一的元素 $( ... 
- jquery中的ajax请求用法以及参数详情
		url: 要求为String类型的参数,(默认为当前页地址)发送请求的地址. type: 要求为String类型的参数,请求方式(post或get)默认为get.注意其他http请求方法,例如put和 ... 
- Jquery监听AJAX请求
		.ajaxComplete() 当Ajax请求完成后注册一个回调函数.这是一个 AjaxEvent. .ajaxError() Ajax请求出错时注册一个回调处理函数,这是一个 Ajax Event. ... 
随机推荐
- Android 图像显示系统 - 导出图层数据的方法介绍(dump GraphicBuffer raw data)
			一.前言 在项目的开发中,为了定位Android显示异常的原因:GPU渲染 or GPU合成 or HWC合成送显异常的问题.我们通常会把图层的原始数据写到文件,然后通过RGB或YUV的软件工具来查看 ... 
- app嵌套页
			Wdatepicker 
- Vue报错: Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'protocol')
			Vue报错: Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'protocol') 报错信 ... 
- ansible模块的介绍与使用
			ansible-doc的使用 1.ansible-doc -h可以看见ansible-doc的所有参数 2.ansible-doc 命令格式:ansible-doc [-l|-F|-s] [optio ... 
- 【多线程】可重入锁 ReentrantLock
			java除了使用关键字synchronized外,还可以使用ReentrantLock实现独占锁的功能.而且ReentrantLock相比synchronized而言功能更加丰富,使用起来更为灵活,也 ... 
- 用python实现自动化登录禅道系统 设置定时器自动执行脚本
			由于各种原因,我想试下用python实现自动登录禅道系统,并且每天定时执行.(本人第一次接触自动化,在大佬眼中门槛都没摸到的类型) 首先缕清思路: 1.实现自动登录禅道系统,用selenium实现2. ... 
- 使用虚拟机在3台centos7系统安装docker和k8s集群
			一.安装docker 环境:准备3台centos7系统,都安装上docker环境,具体安装步骤和流程如下 参考: https://docs.docker.com/install/linux/docke ... 
- Git标签用法
			我们通常会在项目开发到一定阶段时给代码打上标签. 1.Git查看所有标签及其描述信息 git tag -l -n 2.Git创建标签 创建标签并添加描述信息 git tag -a v1.0.0 -m ... 
- layui数据表格搜索
			简单介绍 我是通过Servlet传递json给layui数据表格模块,实现遍历操作的,不过数据量大的话还是需要搜索功能的.这是我参考网上大佬代码写出的搜索功能. 实现原理 要实现搜索功能,肯定需要链接 ... 
- 高通(QCOM)sensor bring up
			高通7150平台 1.添加驱动文件 2.添加编译 3.配置json文件 4.高通默认配置 5.部分sensor外挂电源 6.遇到的问题 1.添加驱动文件 路径:adsp_proc/ssc/sensor ... 
