模拟jQuery简单封装ajax
/*模拟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的更多相关文章
- jquery简单封装
对Raphael画图标的一个jquery简单封装 公司要做一个项目的demo,要求地图上可以插红旗,所以就用到了Raphael. 因为是个demo,所以地图就用了一张图片,效果如下: 所以为了更好的封 ...
- jQuery简单的Ajax调用示例
jQuery确实方便,下面做个简单的Ajax调用: 建立一个简单的html文件: <!DOCTYPE HTML> <html> <head> <script ...
- 对Raphael画图标的一个jquery简单封装
公司要做一个项目的demo,要求地图上可以插红旗,所以就用到了Raphael. 因为是个demo,所以地图就用了一张图片,效果如下: 所以为了更好的封装一下这个功能,就写了一个简单的插件:jquery ...
- 用javascript简单封装AJAX
1.创建一个AJAX引擎对象 var CreateAjax = function () { var xhr = null; if (window.XMLHttpRequest) { //非IE游览器 ...
- jQuery简单的Ajax调用
index.php 的代码如下: <!DOCTYPE HTML> <html> <head> <meta charset="UTF-8"& ...
- 使用jquery再次封装ajax
$.fn.ajaxSend = function (type, url, postdata, onSuccess) { $.ajax({ async: false, url: url, type: t ...
- Jquery Ajax简单封装(集中错误、请求loading处理)
Jquery Ajax简单封装(集中错误.请求loading处理) 对Jquery Ajax做了简单封装,错误处理,请求loading等,运用到项目中集中处理会很方便. 技术层面没有什么好说的,请求是 ...
- ajx技术解析以及模拟jQuery封装
1.后台处理程序 <%@ page language="java" contentType="text/html; charset=UTF-8" page ...
- JavaScript原生封装ajax请求和Jquery中的ajax请求
前言:ajax的神奇之处在于JavaScript 可在不重载页面的情况与 Web 服务器交换数据,即在不需要刷新页面的情况下,就可以产生局部刷新的效果.Ajax 在浏览器与 Web 服务器之间使用异步 ...
随机推荐
- CustomEvent自定义事件
javascript与HTML之间的交互是通过事件来实现的.事件,就是文档或浏览器窗口发生的一些特定的交互瞬间.通常大家都会认为事件是在用户与浏览器进行交互的时候触发的,其实通过javascript我 ...
- BZOJ 2460 [BeiJing2011]元素 ——线性基
[题目分析] 线性基,由于最多有63个,只需要排序之后,动态的去维护线性基即可. [代码] #include <cstdio> #include <cstring> #incl ...
- Android 自动化测试—robotium(九) Junit_report测试报告重定向输出到终端SDCard
借鉴网上相关资料主要用于无root权限的终端.主要分为以下三步: 一.重写InstrumentationTestRunner类: package com.exmaple.test; import ja ...
- mysql 导入导出csv
导出: select RESOURCE_ID_INT,RESOURCE_ID_CHAR,RESOURCE_TITLE from t_resource_info_wb into outfile '/us ...
- spring自定义schema学习
[转载请注明作者和原文链接,欢迎讨论,相互学习.] 一.前言 1. 最近在学习dubbo,里边很多如provider.consumer.registry的配置都是通过spring自定义Schema来实 ...
- 尝试封装适用于权限管理的通用API
谈谈我对权限系统的简单理解 最近一段时间在研究权限系统,在园子里看到个很牛逼的开源的基于DDD-Lite的权限管理系统,并有幸加入了作者的QQ群,呵呵,受到了很大的影响.对于权限管理我有我自己的一些简 ...
- ubuntu安装配置elasticSearch(vagrant)
安装jdk sudo apt-get install python-software-properties sudo add-apt-repository ppa:webupd8team/java s ...
- python: DOM 小实例
一.全选 全部取消 反选 全选:选择指定的所有项目. 全部取消: 取消所有选定的项目. 反选: 选择未选定的,之前已选定的则取消. <!DOCTYPE html> <html la ...
- winform中的确定取消
~~~~~~~~~~~ 今天也是醉了,做的项目找了很多地方也没有找到为什么点击确定取消,form会关闭(还是脑子不活) 加了一个小功能,代码没有什么难的但是,就是碰见了这么一个问题 点击 确定 取 ...
- 使用MS Test进行单元测试
MS Test也可以方便的进行单元测试,可以通过Visual Studio很方便的建立单元测试. 添加对待测试工程的引用,即可方便的开始单元测试. 最基本的一些测试使用如下: using System ...