封装自己的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>

最新文章

  1. Ubuntu15.04YouCompleteMe插件安装
  2. 前端工具-Sublime、WebStorm-快捷方式使用
  3. JavaScript学习笔记——对象知识点
  4. NEXTDAY
  5. github 上的pull request总结
  6. vs在winform中不给力哈-错误不提示
  7. iOS_SN_CoreData数据迁移
  8. 解决vsftpd 530 Permission denied报错
  9. uva 10304 - Optimal Binary Search Tree 区间dp
  10. .net在arraylist用法
  11. jQuery Mobile (整合版)
  12. print a float number with 3 digits following
  13. 我也谈 AngularJS 怎么使用Directive, Service, Controller
  14. 基于socket.io的实时在线选座系统
  15. win10 系统输入法与 idea的 ctr+shift+f 快捷键冲突,解决办法
  16. [国嵌攻略][127][tty驱动程序架构]
  17. LeetCode算法题-Longest Continuous Increasing Subsequence(Java实现)
  18. Myeclipse中的tomcat项目的内存溢出
  19. python 面试题--你能做出多少?
  20. BZOJ 1066 蜥蜴 最大流

热门文章

  1. 学习HTTP——HTTPS
  2. iptables系列教程(三)| iptables 实战篇
  3. Shell 脚本编程最佳实践
  4. Windows IDEA Community 报错
  5. 每天一个 HTTP 状态码 202
  6. 记一次 JDK SPI 配置不生效的问题 → 这么简单都不会,还是回家养猪吧
  7. 基于.NetCore开发博客项目 StarBlog - (10) 图片瀑布流
  8. 30款提升组织效能 SaaS 工具,我们的宝藏工具箱大公开
  9. transforms.py
  10. 155_模型_Power BI &amp; Power Pivot 进销存之安全库存