自定义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: ...
随机推荐
- Windows和Linux下搭建J2sdk的环境
J2SDK 作为jsp系统配置中必不可少的组件,越来越多的得到应用.下来是我整理的以往工作时搜集的资料.使用时方便查询,希望对广大的工程师有帮助. windows服务器环境下 j2sdk 的安装和环境 ...
- Min_25筛初级应用:求$[1,n]$内质数个数
代码 #include <bits/stdc++.h> #define rin(i,a,b) for(int i=(a);i<=(b);++i) #define irin(i,a,b ...
- SQL Server服务起不了
转载 MSSQLSERVER服务无法启动的解决方案 1.IP地址配置不正确: 打开 Microsoft SQL Server 2005配置工具下的SQL Server Configuration ...
- EMC存储同时分配空间到两台LINUX服务器路径不一致导致双机盘符大小不一致
操作系统:Centos linux6.6 当我们从EMC存储上划分空间同时分配给两台或者多台服务器上时,有的时候会出现在服务器上所生成的磁盘路径是不一致的,这样就会导致盘符名称不一致或者是盘符对应的大 ...
- sqli-labs(36)
0X01发现又是‘’被过滤了 ?id=%df%%20and%=%23 错误 ?id=1%df%27%20and%201=1%23 正确 存在注入 0X01爆数据库 ?id=-%df%%20unio ...
- js,正则实现金钱格式化
https://blog.csdn.net/qq_36279445/article/details/78889305 https://github.com/jawil/blog/issues/30
- [LeetCode]-DataBase-Rising Temperature
Given a Weather table, write a SQL query to find all dates' Ids with higher temperature compared to ...
- hook C++
Intercepting Calls to COM Interfaces(hook com接口) 通过COM组件IFileOperation越权复制文件 代码注入之远程线程篇 使用VC++通过远程进程 ...
- 分析邮件日志从每秒处理3个结果到每秒处理800个结果过程(grep提速)
由于业务需要,对EDM发出的邮件日志进行分析处理,我要做的是预处理,把posfix杂乱无章的日志中找到我需要的数据. 我用javamail发的邮件,发送邮件时获取到是一个messageId,形如:21 ...
- douyu danmu test c#
using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Text.Regul ...