• 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. 【UOJ #210】【UER #6】寻找罪犯

    题目描述 通过一些不可描述的方式,妹滋滋算出了 51% 的得票率,于是就她就把这个公开给了广大用户 —— UOJ 解散已成定局. 几个小时后,UOJ 创始人伏特跳蚤国王宣布辞职,即日起退出 UOJ 团 ...

  2. 3D Computer Grapihcs Using OpenGL - 20 结合Buffer

    在上一节的案例中,我们使用了四个Buffer Object,立方体的VertexBuffer,立方体的索引Buffer,四面体的VertexBuffer,四面体的索引Buffer. 我们这节尝试把两个 ...

  3. bootstrap-table export导出问题

    引入方式如上图,首先是,bootstrap.min.js,其他 Bootstrap Table 官网 bootstrap-table.min.js  // 表格 bootstrap-table-zh- ...

  4. python常用笔记

    A trick when you want to flatten a matrix X of shape (a,b,c,d) to a matrix X_flatten of shape (b*c*d ...

  5. 无法加载模块 TP3.2

    报错 3.2的路由功能是针对模块设置的,所以URL中的模块名不能被路由,路由定义也通常是放在模块配置文件中. 'MODULE_DENY_LIST' => array('Common','User ...

  6. leetcode-easy-array-217. Contains Duplicate

    mycode  76.39% class Solution(object): def containsDuplicate(self, nums): """ :type n ...

  7. pyhton2与pyhton3切换

    ubuntu中默认的Python版本是Python2.X,但是现在Python的最新版本是Python3.X. 那么怎么修改ubutun系统默认的Python解释器呢? 如果没有安装,则使用以下命令安 ...

  8. Jenkins安装以及配置

    Jenkins介绍 Jenkins是一个java开发的.开源的.非常好用持续集成的工具,它能帮我们实现自动化部署环境.测试.打包等等的工作,还可以在构建任务成功或者失败之后给我们发邮件通知. 什么叫持 ...

  9. import 和组件库按需引入

    概述 今天查资料查到了一些有趣的东西,记录下来,供以后开发时参考,相信对其他人也有用. 参考资料: import.require.export.module.exports 混合使用详解 从 impo ...

  10. 中国MOOC_零基础学Java语言_第2周 判断

    浮点数判断大小 public class Main { public static void main(String[] args) { double a = 1.0; double b = 0.1 ...