自定义ajax函数(仿照jQuery)
- AJAX介绍
- AJAX = 异步 JavaScript 和 XML。
- 全称:Asynchronous Javascript And XML;
- AJAX 是一种用于创建快速动态网页的技术。
- 通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
- 传统的网页(不使用 AJAX)如果需要更新内容,必需重载整个网页面。
- 有很多使用 AJAX 的应用程序案例:新浪微博、Google 地图、开心网等等。
- 创建一个简单的ajax应用
// 判断用户名
userNamer.onblur = function(){
// 获取用户名数值从而进行服务器判断
var usernameValue = userNamer.value;
// ajax 四个步骤
var xhr = null;
// 1.创建对象 兼容性处理
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}
else{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
// 2.准备发送
xhr.open("get","./php/usernamer.php?uname="+usernameValue,true);
// 3.执行发送
xhr.send(null);
// 4.设置回调函数
xhr.onreadystatechange = function(){
if(xhr.readyState == 4) {
if(xhr.status == 200){
// 获取值
var result = xhr.responseText;
var usernamer_result = document.querySelector(".usernamer_result");
if(result == "ok"){
usernamer_result.innerText = "该用户名可用";
}else{
usernamer_result.innerText = "该用户名已被注册";
}
}
}
};
};
* 封装ajax:
* 为了克服传统函数不能设置默认值 以及 不能随意更改参数顺序的问题
* 这里采用对象传参方式来封装ajax请求函数(使用的是jQuery模式)
```
//函数内部默认对象
var defaults = {
type:"get",
url:"#",
data:{},
dataType:"json",
async:true,
success:function(result){
console.log(result);
}
};
```
## 封装ajax:
!(function(w){
w.lufei = {};
// 参数详解
// 1.请求类型 type
// 2.请求地址 url
// 3.传递参数 params 这里可以传多个 采用对象data{}
// 4.数据类型 datatype
// 5.回调函数 callback 用于获取数据后进行函数判断 success::function(){}
// 6.同步异步 async
// 使用对象进行封装 这些参数 并且设置默认值 不用考虑顺序
w.lufei.ajax = function(obj){
var defaults = {
type:"get",
url:"#",
data:{},
dataType:"json",
async:true,
success:function(result){
console.log(result);
}
};
// 遍历对象属性名
for(var key in obj){
defaults[key] = obj[key];
}
// ajax 四个步骤
var xhr = null;
// 1.创建对象 兼容性处理
if(window.XMLHttpRequest){
xhr = new XMLHttpRequest();
}
else{
xhr = new ActiveXObject("Microsoft.XMLHTTP");
}
// 字符串拼接
var params = "";
for(var attr in defaults.data){
params += attr+"="+defaults.data[attr]+"&";
}
// 去除最后一个&
if(params){
// 字符串截取
params = params.substring(0,params.length-1);
}
if(defaults.type=="get"){
defaults.url += "?"+params;
}
// 2.准备发送
xhr.open(defaults.type,defaults.url,defaults.async);
// 3.执行发送
if(defaults.type=="get"){
xhr.send(null);
}else if(defaults.type=="post"){
xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xhr.send(params);
}
// 4.设置回调函数
if(defaults.async){
xhr.onreadystatechange = function(){
if(xhr.readyState == 4) {
if(xhr.status == 200){
// 获取值
var result =null;
if(defaults.dataType=="json"){
result = xhr.responseText;
result = JSON.parse(result);
}
else if(defaults.dataType=="xml"){
result = xhr.responseXML;
}else{
result = xhr.responseText;
}
if(defaults["success"]){
defaults["success"](result);
}
}
}
};
}
else{
if(xhr.readyState == 4) {
if(xhr.status == 200){
// 获取值
var result =null;
if(defaults.datatype=="json"){
result = xhr.responseText;
result = JSON.parse(result);
}
else if(defaults.datatype=="xml"){
result = xhr.responseXML;
}else{
result = xhr.responseText;
}
if(defaults["success"]){
defaults["success"](result);
}
}
}
}
};
})(window)
自定义ajax函数(仿照jQuery)的更多相关文章
- jQuery.ajax() 函数详解
jQuery.ajax()函数用于通过后台HTTP请求加载远程数据. jQuery.ajax()函数是jQuery封装的AJAX技术实现,通过该函数,我们无需刷新当前页面即可获取远程服务器上的数据. ...
- 详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()
一,$.get(url,[data],[callback]) 说明:url为请求地址,data为请求数据的列表(是可选的,也可以将要传的参数写在url里面),callback为请求成功后的回调函数,该 ...
- 详细解读Jquery各Ajax函数
$.get(),$.post(),$.ajax(),$.getJSON() 一,$.get(url,[data],[callback]) 说明:url为请求地址,data为请求数据的列表,callba ...
- 详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON() —(转)
一,$.get(url,[data],[callback]) 说明:url为请求地址,data为请求数据的列表(是可选的,也可以将要传的参数写在url里面),callback为请求成功后的回调函数,该 ...
- 详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()【转】【补】
一,$.get(url,[data],[callback]) 说明:url为请求地址,data为请求数据的列表(是可选的,也可以将要传的参数写在url里面),callback为请求成功后的回调函数,该 ...
- Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()
一,$.get(url,[data],[callback]) 说明:url为请求地址,data为请求数据的列表(是可选的,也可以将要传的参数写在url里面),callback为请求成功后的回调函数,该 ...
- JQUERY中各个ajax函数
1.$(selecter).load() --- load() 方法从服务器加载数据,并把返回的数据放入被选元素中 2.$.get(url,callback()) 3.$.post(url,d ...
- [jQuery]jQuery DataTables插件自定义Ajax分页实现
前言 昨天在博客园的博问上帮一位园友解决了一个问题,我觉得有必要记录一下,万一有人也遇上了呢. 问题描述 园友是做前端的,产品经理要求他使用jQuery DataTables插件显示一个列表,要实现分 ...
- jquery的ajax()函数传值中文乱码解决方法介绍
jquery的ajax()函数传值中文乱码解决方法介绍,需要的朋友可以参考下 代码如下: $.ajax({ dataType : ‘json', type : ‘POST', url : ‘http: ...
随机推荐
- 【BZOJ4570】 [Scoi2016]妖怪
Description 邱老师是妖怪爱好者,他有n只妖怪,每只妖怪有攻击力atk和防御力dnf两种属性.邱老师立志成为妖怪大师,于 是他从真新镇出发,踏上未知的旅途,见识不同的风景.环境对妖怪的战斗力 ...
- 【转】Django restful framework中自动生成API文档
转自 https://www.cnblogs.com/sui776265233/p/11350434.html 自动生成api文档(不管是函数视图还是类视图都能显示) 1.安装rest_framewo ...
- (46)LINUX应用编程和网络编程之一Linux应用编程框架
3.1.1.应用编程框架介绍 3.1.1.1.什么是应用编程 (1)整个嵌入式linux核心课程包括5个点,按照学习顺序依次是:裸机.C高级.uboot和系统移植.linux应用编程和网络编程.驱动. ...
- es入门--curl的使用
文档介绍: 首先要讲什么是文档,我们中大多是java程序员,java是面向对象的,那么在elasticsearch看来:对象和文档是等价的.只不过这个对象是可以被序列化成key-value形式的jso ...
- leetcode-easy-array-48. Rotate Image-NO
mycode 思路:第m行要变到 - 1- m 列 ,但是没有再想一步即列变为行,这样每一个位置的变换方式就出来了 难点:如何不使用额外空间呢? 参考: 思路:找到矩阵旋转和转置之间的联系,转置是可以 ...
- 在SOUI3.0中使用数值动画
上一篇介绍了插值动画,插值动画是直接作用于窗口对象的. 数值动画则可以作用于任何对象. SOUI内置了3种数值类型的动画,分别是SIntAnimator, SFloatAnimator, SColor ...
- python-接口开发flask模块(三)开发登陆接口
#写一个login的接口,实现的功能是输入用户名和密码,如果数据库中有该用户,那么就去redis中插入 登陆产生的sign值插入redis中有效时间600s import flask import t ...
- 服务器控件调用JS函数
是服务器端控件,不能在JS里直接调用,但可以在aspx.cs 里写方法可以调用JS函数,比如JS方法名称是check(), function check() { alert(document.ge ...
- 编写Python脚本把sqlAlchemy对象转换成dict的教程
编写Python脚本把sqlAlchemy对象转换成dict的教程 在用sqlAlchemy写web应用的时候,经常会用json进行通信,跟json最接近的对象就是dict,有时候操作dict也会比操 ...
- Spring的应用上下文ApplicationContext
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes() ...