• 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)的更多相关文章

  1. jQuery.ajax() 函数详解

    jQuery.ajax()函数用于通过后台HTTP请求加载远程数据. jQuery.ajax()函数是jQuery封装的AJAX技术实现,通过该函数,我们无需刷新当前页面即可获取远程服务器上的数据. ...

  2. 详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()

    一,$.get(url,[data],[callback]) 说明:url为请求地址,data为请求数据的列表(是可选的,也可以将要传的参数写在url里面),callback为请求成功后的回调函数,该 ...

  3. 详细解读Jquery各Ajax函数

    $.get(),$.post(),$.ajax(),$.getJSON() 一,$.get(url,[data],[callback]) 说明:url为请求地址,data为请求数据的列表,callba ...

  4. 详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON() —(转)

    一,$.get(url,[data],[callback]) 说明:url为请求地址,data为请求数据的列表(是可选的,也可以将要传的参数写在url里面),callback为请求成功后的回调函数,该 ...

  5. 详细解读Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()【转】【补】

    一,$.get(url,[data],[callback]) 说明:url为请求地址,data为请求数据的列表(是可选的,也可以将要传的参数写在url里面),callback为请求成功后的回调函数,该 ...

  6. Jquery各Ajax函数:$.get(),$.post(),$.ajax(),$.getJSON()

    一,$.get(url,[data],[callback]) 说明:url为请求地址,data为请求数据的列表(是可选的,也可以将要传的参数写在url里面),callback为请求成功后的回调函数,该 ...

  7. JQUERY中各个ajax函数

    1.$(selecter).load()     --- load() 方法从服务器加载数据,并把返回的数据放入被选元素中 2.$.get(url,callback()) 3.$.post(url,d ...

  8. [jQuery]jQuery DataTables插件自定义Ajax分页实现

    前言 昨天在博客园的博问上帮一位园友解决了一个问题,我觉得有必要记录一下,万一有人也遇上了呢. 问题描述 园友是做前端的,产品经理要求他使用jQuery DataTables插件显示一个列表,要实现分 ...

  9. jquery的ajax()函数传值中文乱码解决方法介绍

    jquery的ajax()函数传值中文乱码解决方法介绍,需要的朋友可以参考下 代码如下: $.ajax({ dataType : ‘json', type : ‘POST', url : ‘http: ...

随机推荐

  1. jQuery字体图标的三种方法

    BootStrap框架原生图标 在导入BootStrap包的同时,导入bootstrap-3.3.7-dist/css/bootstrap.css层叠样式; <button type=" ...

  2. Mybatis 自动生成mapper文件

    在pom.xml下的<build>内加入: <build> <plugins> <plugin> <groupId>org.mybatis. ...

  3. window.open传递多个参数

    在前台使用var url = 'AddFiles.aspx?name=' + nm + '&id=' + id; window.open(url, "", "wi ...

  4. 使用SharpZIpLib写的压缩解压操作类

    使用SharpZIpLib写的压缩解压操作类,已测试. public class ZipHelper { /// <summary> /// 压缩文件 /// </summary&g ...

  5. java中的char,short,int,long占几个字节

    1:“字节”是byte,“位”是bit : 2: 1 byte = 8 bit : char 在java中是2个字节.java采用unicode,2个字节(16位)来表示一个字符. short 2个字 ...

  6. JS关于this指向的小练习

    请阅读以下代码:var obj = {};obj.log = console.log;obj.log.call(console, this)该代码在浏览器中执行,输出的日志结果是什么? 这道题就是问c ...

  7. 安装ssh

    1.win10 安装ssh sudo apt-get remove --purge openssh-server ## 先删ssh sudo apt-get install openssh-serve ...

  8. MYSQL常见安装错误集:[ERROR] --initialize specified but the data directory has files in it. Abort

    1.[ERROR] --initialize specified but the data directory has files in it. Abort [错误] -初始化指定,但数据目录中有文件 ...

  9. Jmeter接口测试系列之测试用例变量参数化处理

    在进行接口测试时,一组完整的接口测试用例,存在后一个测试用例使用前一个用例的请求结果中的数据,此时就需要参数化测试用例中值.直接使用变量调用会存在问题,此时就需要用到beanshell去改变. 举例说 ...

  10. 初学单片机:Proteus介绍、Proteus与Keil联调(Windows10环境下)

    Proteus是一个仿真软件,可以在里面设计电路并模拟测试,也可生成PCB的布线等等,反正就是强大的不行.初学单片机,除了开发板,这个仿真器就是一个很好的调式环境.软件安装信息: Proteus 8. ...