自定义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: ...
随机推荐
- Redis配置文件全解
基本配置 port 6379 # 监听端口号,默认为 6379,如果你设为 0 ,redis 将不在 socket 上监听任何客户端连接. daemonize no #是否以后台进程启动 datab ...
- Oracle rac11g 安装报INS41112
由于集群服务器上的数据库存储层要上双活,所以需要重置存储 不幸17服务器在重启后突然奔溃了,所以需要重新安装17服务器系统 在把18的软件全都卸载干净后,重新安装集群服务器,但却遇到了如下问题 多次针 ...
- IView入门练习~CDN模式全局加载JS
关于 iView iView 是一套基于 Vue.js 的开源 UI 组件库,主要服务于 PC 界面的中后台产品. 特性 高质量.功能丰富 友好的 API ,自由灵活地使用空间 细致.漂亮的 UI 事 ...
- SQL 2008建一个job
原文地址:http://blog.csdn.net/htl258/article/details/5543694 -- Author : htl258(Tony)-- Date : 2010- ...
- React Native商城项目实战03 - 包装Navigator
1.在Home目录下新建首页详细页HomeDetail.js /** * 首页详情页 */ import React, { Component } from 'react'; import { App ...
- 各种sort排序总结
冒泡排序 选择排序 插入排序
- C# AxWindowsMediaPlayer
AxWMPLib.AxWindowsMediaPlayer winPlayer = new AxWMPLib.AxWindowsMediaPlayer(); winPlayer.Dock = Dock ...
- 为什么我上传了flv或MP4文件到服务器,可输入正确地址通过http协议来访问总是出现“无法找到该页”的404错误呢
常用MIME类型(Flv,Mp4的mime类型设置) 也许你会在纳闷,为什么我上传了flv或MP4文件到服务器,可输入正确地址通过http协议来访问总是出现“无法找到该页”的404错误呢?这就表明mp ...
- python学习之文件读写操作
open函数 在使用文件之前,需要先打开,即使用open函数 如: files=open("文件路径","操作方式") 解释如下: (1.files:为文件对象 ...
- Selenium学习之==>Css Selector使用方法
一.什么是Css Selector Css Selector定位实际就是HTML的Css选择器的标签定位 工具 Css Selector的练习建议大家安装火狐浏览器后,下载插件,FireFinder ...