Ajax基础(五)--封装库

jQuery ajax请求的基本语法:

一、封装为对象:

ajax.txt代码:

{"id":"102","username":"liyi","age":3}

实例代码:

  1 <!DOCTYPE html>
  2 <html>
  3
  4     <head>
  5         <meta charset="UTF-8">
  6         <title></title>
  7     </head>
  8
  9     <body>
 10
 11         id:<input type="text" id="id" name="id" />
 12         <br/> user_id:
 13         <input type="text" id="userid" name="userid" />
 14         <br/> user_name:
 15         <input type="text" id="username" name="name" />
 16         <br/> user_age:
 17         <input type="text" id="age" name="age" />
 18         <br/> msg:
 19         <input type="text" id="msg" name="msg" />
 20         <br/>
 21         <input type="button" value="test userid" onclick="findUser();" />
 22         <script type="text/javascript">
 23             var AjaxUtil = {
 24
 25                 // 基础选项
 26                 options: {
 27                     method: "get", // 默认提交的方法,get post
 28                     url: "", // 请求的路径 required
 29                     params: {}, // 请求的参数
 30                     type: ‘text‘, // 返回的内容的类型,text,xml,json
 31                     callback: function() {} // 回调函数 required
 32                 },
 33
 34                 // 创建XMLHttpRequest对象
 35                 createRequest: function() {
 36                     var xmlhttp;
 37                     try {
 38                         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); // IE6以上版本
 39                     } catch(e) {
 40                         try {
 41                             xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); // IE6以下版本
 42                         } catch(e) {
 43                             try {
 44                                 xmlhttp = new XMLHttpRequest();
 45                                 if(xmlhttp.overrideMimeType) {
 46                                     xmlhttp.overrideMimeType("text/xml");
 47                                 }
 48                             } catch(e) {
 49                                 alert("您的浏览器不支持Ajax");
 50                             }
 51                         }
 52                     }
 53                     return xmlhttp;
 54                 },
 55                 // 设置基础选项
 56                 setOptions: function(newOptions) {
 57                     for(var pro in newOptions) {
 58                         this.options[pro] = newOptions[pro];
 59                     }
 60                 },
 61                 // 格式化请求参数
 62                 formateParameters: function() {
 63                     var paramsArray = [];
 64                     var params = this.options.params;
 65                     for(var pro in params) {
 66                         var paramValue = params[pro];
 67                         /*if(this.options.method.toUpperCase() === "GET")
 68                         {
 69                             paramValue = encodeURIComponent(params[pro]);
 70                         }*/
 71                         paramsArray.push(pro + "=" + paramValue);
 72                     }
 73                     return paramsArray.join("&");
 74                     // method=get&url=&callback=&type=text
 75                 },
 76
 77                 // 状态改变的处理
 78                 readystatechange: function(xmlhttp) {
 79                     // 获取返回值
 80                     var returnValue;
 81                     if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
 82                         switch(this.options.type) {
 83                             case "xml":
 84                                 returnValue = xmlhttp.responseXML;
 85                                 break;
 86                             case "json":
 87                                 var jsonText = xmlhttp.responseText;
 88                                 if(jsonText) {
 89                                     returnValue = eval("(" + jsonText + ")");
 90                                 }
 91                                 break;
 92                             default:
 93                                 returnValue = xmlhttp.responseText;
 94                                 break;
 95                         }
 96                         if(returnValue) {
 97                             this.options.callback.call(this, returnValue);
 98                         } else {
 99                             this.options.callback.call(this);
100                         }
101                     }
102                 },
103
104                 // 发送Ajax请求
105                 //{‘method‘:‘get‘}
106                 request: function(options) {
107                     var ajaxObj = this;
108
109                     // 设置参数
110                     ajaxObj.setOptions.call(ajaxObj, options);
111
112                     // 创建XMLHttpRequest对象
113                     var xmlhttp = ajaxObj.createRequest.call(ajaxObj);
114
115                     // 设置回调函数
116                     xmlhttp.onreadystatechange = function() {
117                         ajaxObj.readystatechange.call(ajaxObj, xmlhttp);
118                     };
119
120                     // 格式化参数
121                     var formateParams = ajaxObj.formateParameters.call(ajaxObj);
122
123                     // 请求的方式
124                     var method = ajaxObj.options.method;
125                     var url = ajaxObj.options.url;
126
127                     if("GET" === method.toUpperCase()) {
128                         url += "?" + formateParams;
129                     }
130
131                     // 建立连接
132                     xmlhttp.open(method, url, true);
133
134                     if("GET" === method.toUpperCase()) {
135                         xmlhttp.send(null);
136                     } else if("POST" === method.toUpperCase()) {
137                         // 如果是POST提交,设置请求头信息
138                         xmlhttp.setRequestHeader("Content-Type",
139                             "application/x-www-form-urlencoded");
140                         xmlhttp.send(formateParams);
141                     }
142                 }
143             };
144
145             function $(id) {
146                 return document.getElementById(id);
147             }
148
149             function process(json) {
150                 if(json) {
151                     $("id").value = json.id;
152                     $("username").value = json.username;
153                     $("age").value = json.age;
154                 } else {
155                     $("msg").value = "用户不存在";
156                     $("id").value = "";
157                     $("username").value = "";
158                     $("age").value = "";
159                 }
160             }
161
162             function findUser() {
163                 var userid = $("userid").value;
164                 if(userid) {
165                     AjaxUtil.request({
166                         url: "ajax.txt",
167                         params: {
168                             id: userid
169                         },
170                         type: ‘json‘,
171                         callback: process
172                     });
173                 }
174             }
175         </script>
176     </body>
177
178 </html>

效果:

debugger;是可以调试的:

基本语法:

 1 $.ajax({
 2                  cache: true,
 3                 type: "POST",
 4                  url:ajaxCallUrl,
 5                 //dataType: "json",
 6                  data:$(‘#yourformid‘).serialize(),// 你的formid,这是提交表单的
 7                 async: false,
 8                  error: function(request) {
 9                      alert("Connection error");
10                  },
11                  success: function(data) {
12                      $("#commonLayout_appcreshi").parent().html(data);
13                  }
14             });

二、封装为函数

时间: 2024-10-26 07:57:21

Ajax基础(五)--封装库的相关文章

第一百三十五节,JavaScript,封装库--拖拽

JavaScript,封装库--拖拽 封装库新增1个拖拽方法 /** tuo_zhuai()方法,将一个弹窗元素实现拖拽功能 * 注意:一般需要在css文件将元素里的某一个区块光标设置成提示可以拖拽,如:cursor: move; * 无参 **/ feng_zhuang_ku.prototype.tuo_zhuai = function () { if (this.jie_dian.length == 1) { var yan_su = null; for (var i = 0; i < th

第一百五十三节,封装库--JavaScript,表单验证--备注字数验证

封装库--JavaScript,表单验证--备注字数验证 效果图

第一百六十一节,封装库--JavaScript,完整封装库文件

封装库--JavaScript,完整封装库文件 /** *feng_zhuang_ku_1.0版本,js封装库,2016/12/29日:林贵秀 **/ /** 前台调用 * 每次调用$()创建库对象,使其每次调用都是独立的对象 * $()创建库对象,有一个可选参数,参数有两种方式,1是传入的this,2是传入的字符串 * 可选参数说明: * 传入的this,this,就是当前对象本身 * * 传入的字符串,代表获取元素选择器 * 参数是元素选择器(id值.class值.标签名称)其中一样的字符串

Ajax基础知识 浅析(含php基础语法知识)

1.php基础语法    后缀名为.php的文件 (1) echo   向页面中输入字符串  <?php    所有php相关代码都要写在<?php ?>这个标签之中 echo "<div>Hello World!</div>"; ?> (2) $  变量声明  如果只声明不赋值,会报错 <?php $num=123; echo $num; echo "<div>编号为:".$num."&l

jQuery基础---Ajax基础教程

jQuery基础---Ajax基础 内容提纲: 1.Ajax 概述 2.load()方法 3.$.get()和$.post() 4.$.getScript()和$.getJSON() 5.$.ajax()方法 6.表单序列化 发文不易,转载请注明出处~ 一.Ajax 概述 Ajax 这个概念是由 Jesse James Garrett 在 2005 年发明的. 它本身不是单一技术, 是一串技术的集合,主要有: 1.JavaScript,通过用户或其他与浏览器相关事件捕获交互行为: 2.XMLHt

jQuery基础---Ajax基础教程(二)

jQuery基础---Ajax进阶 内容提纲: 1.加载请求 2.错误处理 3.请求全局事件 4.JSON 和 JSONP 5.jqXHR 对象 发文不易,转载请注明出处! 在 Ajax 基础一篇中,我们了解了最基本的异步处理方式.本篇来了解一下 Ajax 的一些全局请求事件.跨域处理和其他一些问题. 一.加载请求 在 Ajax 异步发送请求时,遇到网速较慢的情况,就会出现请求时间较长的问题.而超过一定时间的请求, 用户就会变得不再耐烦而关闭页面. 而如果在请求期间能给用户一些提示,比如:“正在

【javascript】ajax 基础 --本文转载

[javascript]ajax 基础 什么是 ajax ajax 即"Asynchronous JavaScript and XML"(异步 JavaScript 和 XML),也就是无刷新数据读取. http 请求 首先需要了解 http 请求的方法(GET 和 POST). GET 用于获取数据.GET 是在 URL 中传递数据,它的安全性低,容量低. POST 用于上传数据.POST 安全性一般,容量几乎无限. ajax 请求 ajax 请求一般分成 4 个步骤. 1.创建 a

原生ajax基础知识笔记

原生ajax基础知识笔记 1.创建 XMLHttpRequest 对象 所有现代浏览器(IE7+.Firefox.Chrome.Safari 以及 Opera)均内建 XMLHttpRequest 对象. 老版本的 Internet Explorer (IE5 和 IE6)使用 ActiveXObject. 代码示例: // Creates a XMLHttpRequest object. var xhr = new XMLHttpRequest(); 兼容浏览器代码示例: var xhr; /

第一百三十九节,JavaScript,封装库--CSS选择器

JavaScript,封装库--修改元素选择器 就是将构造库函数修改成元素选择器,像css那样,输入#xxx .xxx xxx  (获取指定id下的指定class下的指定标签元素) 修改后的基础库 /** *feng_zhuang_ku_1.0版本,js封装库,2016/12/29日:林贵秀 **/ /** 前台调用 * 每次调用$()创建库对象,使其每次调用都是独立的对象 * $()创建库对象,有一个可选参数,参数有两种方式,1是传入的this,2是传入的字符串 * 可选参数说明: * 传入的

ajax的再次封装!(改进版) —— new与不 new 有啥区别?

生命不息重构不止! 上一篇写了一下我对ajax的再次封装的方法,收到了很多有价值的回复,比如有童鞋建议用$.extend,一开始还以为要做成插件呢,后来才知道,原来这个东东还可以实现合并.省着自己再去做判断了. 还有童鞋说“要不要多加点传入参数”,这一下提醒我了,ajax有很多参数呀,常用的我考虑进来了,但是还有很多不常用的呢,如果需要的话怎么办?在看看我调用原生ajax的方式,kao,完全不支持增加其他参数吗,这怎么行,改一定要改.于是就改成了这样. 1 //对ajax的封装 //最基础的一层