/*模拟jQuery的写法 (简单写法)*/
var $={};
/*ajax*/
$.ajax = function (options) {
/*
* 请求
* 1.请求接口 type get post 默认的是get 决定是否设置请求头
* 2.接口地址 url 不确定 字符串 如果用户没有传 默认的接口地址为当前路径
* 3.是否是异步 async 默认的就是异步 true;false 是同步请求
* 4.提交数据 data 默认的是对象 {name:'XXX',age:'19'} 默认是{}
*
* 响应
* 1.成功回调函数 success 代表的是一个函数 用来处理成功之后的业务逻辑的函数
* 1.1 字符串 xml json格式的字符串 数据转换
* 2.失败回调函数 error 代表的是一个函数 用来处理失败之后的业务逻辑的函数
* 2.1 返回一些错误信息
* */ /*处理默认参数*/
if(!options || typeof options != 'object') return false;
/*如果没有传 使用默认的get方式提交*/
var type = options.type || 'get';
/*如果没有传 使用默认的当前路径*/
var url = options.url || location.pathname;
/*强制 是false的时候就是同步 否则都是异步*/
var async = options.async === false?false:true;
/*如果没有就是空对象*/
var data = options.data || {};
/*对象是无法进行传输 {name:'',age:''} 拼接字符串 name=xzz&age=18*/
var dataStr = '';
for(var key in data){
dataStr+=key+'='+data[key]+'$';
}
dataStr = dataStr && dataStr.slice(0,-1); /*ajax封装编程*/
/*初始化*/
var xhr = new XMLHttpRequest();
xhr.open(type,type == 'get'?url+'?'+dataStr:url,async);
/*请求头*/
if(type == 'post'){
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
}
/*请求主体*/
xhr.send(type=='get'?null:dataStr); /*响应*/
xhr.onreadystatechange = function () {
/*一定要完全完成通讯*/
if(xhr.readyState == 4){
if(xhr.status == 200){
/*请求成功*/
/*字符串 xml josn格式的字符串 数据转换*/
/*获取响应类型*/
var contentType = xhr.getResponseHeader("Content-Type");
var result = null; if(contentType.indexOf('xml')>-1){
/*xml*/
result = xhr.responseXML;
}else if(contentType.indexOf('json')>-1){
/*json*/
result = JSON.parse(xhr.responseText);
}else{
/*string*/
result = xhr.responseText;
}
options.success && options.success(result); }else{
/*请求失败*/
options.error && options.error({status:xhr.status,statusText:xhr.statusText});
}
}
}
}; /*get*/
$.get = function (options) {
options.type = 'get';
$.ajax(options);
}
/*post*/
$.get = function (options) {
options.type = 'post';
$.ajax(options);
}

注:简单写法,仅供参考。

模拟jQuery简单封装ajax的更多相关文章

  1. jquery简单封装

    对Raphael画图标的一个jquery简单封装 公司要做一个项目的demo,要求地图上可以插红旗,所以就用到了Raphael. 因为是个demo,所以地图就用了一张图片,效果如下: 所以为了更好的封 ...

  2. jQuery简单的Ajax调用示例

    jQuery确实方便,下面做个简单的Ajax调用: 建立一个简单的html文件: <!DOCTYPE HTML> <html> <head> <script ...

  3. 对Raphael画图标的一个jquery简单封装

    公司要做一个项目的demo,要求地图上可以插红旗,所以就用到了Raphael. 因为是个demo,所以地图就用了一张图片,效果如下: 所以为了更好的封装一下这个功能,就写了一个简单的插件:jquery ...

  4. 用javascript简单封装AJAX

    1.创建一个AJAX引擎对象 var CreateAjax = function () { var xhr = null; if (window.XMLHttpRequest) { //非IE游览器 ...

  5. jQuery简单的Ajax调用

    index.php 的代码如下: <!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"& ...

  6. 使用jquery再次封装ajax

    $.fn.ajaxSend = function (type, url, postdata, onSuccess) { $.ajax({ async: false, url: url, type: t ...

  7. Jquery Ajax简单封装(集中错误、请求loading处理)

    Jquery Ajax简单封装(集中错误.请求loading处理) 对Jquery Ajax做了简单封装,错误处理,请求loading等,运用到项目中集中处理会很方便. 技术层面没有什么好说的,请求是 ...

  8. ajx技术解析以及模拟jQuery封装

    1.后台处理程序 <%@ page language="java" contentType="text/html; charset=UTF-8" page ...

  9. JavaScript原生封装ajax请求和Jquery中的ajax请求

    前言:ajax的神奇之处在于JavaScript 可在不重载页面的情况与 Web 服务器交换数据,即在不需要刷新页面的情况下,就可以产生局部刷新的效果.Ajax 在浏览器与 Web 服务器之间使用异步 ...

随机推荐

  1. AMD and CMD

    AMD 规范在这里:https://github.com/amdjs/amdjs-api/wiki/AMDCMD 规范在这里:https://github.com/seajs/seajs/issues ...

  2. ACM: SCU 4438 Censor - KMP

     SCU 4438 Censor Time Limit:0MS     Memory Limit:0KB     64bit IO Format:%lld & %llu  Practice D ...

  3. 封装ajax(二)闭包的形式

    (function(){ var $=(function(){ function create(){ if(window.XMLHttpRequest){ var xhr=new XMLHttpReq ...

  4. [LintCode] Single Number 单独的数字

    Given 2*n + 1 numbers, every numbers occurs twice except one, find it. Have you met this question in ...

  5. 实战Java虚拟机之三“G1的新生代GC”

    今天开始实战Java虚拟机之三:“G1的新生代GC”. 总计有5个系列 实战Java虚拟机之一“堆溢出处理” 实战Java虚拟机之二“虚拟机的工作模式” 实战Java虚拟机之三“G1的新生代GC” 实 ...

  6. 【iCore3 双核心板_FPGA】实验二十七:基于SDRAM的TFT驱动器的设计

    实验指导书及代码包下载: http://pan.baidu.com/s/1c2dZihE

  7. 玩转 H5 下拉上滑动效

    按照上面的技术方案实施,具体过程为: 禁用页面顶部下拉事件  ------>  将页面的主体内容用一个DIV容器包含起来,同时复制需要放大处理的内容节点至主体内容之外  ------> 绑 ...

  8. sql入门基础

    好用的mysql客户端 https://www.quora.com/What-is-the-best-free-DB-schema-design-tool https://www.quora.com/ ...

  9. [lua大坑]一个莫名其妙的lua执行时崩溃引出的堆栈大小问题

    这是一个坑,天坑!如果不是我随手删除了一个本地变量,这个问题直到现在我应该也没有头绪. 首先,写了一个新的lua脚本,载入,执行.在执行的时候,出了这么一个莫名其妙的问题: EXC_BAD_ACCES ...

  10. 几何服务,cut功能,输入要素target(修改前)内容。

    几何服务,cut功能测试,输入要素target(修改前)内容. {"geometryType":"esriGeometryPolyline","geo ...