模拟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 服务器之间使用异步 ...
随机推荐
- jvm中的年轻代 老年代 持久代 gc
虚拟机中的共划分为三个代:年轻代(Young Generation).老年代(Old Generation)和持久代(Permanent Generation).其中持久代主要存放的是Java类的类信 ...
- Sharepoint+Office Infopath+快速搭建问卷调查系统
项目背景 要开发供公司内部使用的N多个在线调查问卷,要求信息在统一的平台上方便跟踪及管理. 公司内部上了Sharepoint系统及大家习惯了使用infopath及Quick app for share ...
- vs发布的程序不依赖运行时库msvcp100.dll
[摘要:msvcr100.dll:MS Visual C Runtime 100 msvcp100.dll:MS Visual CPp 100 vs建立的工程,运转时库的范例有MD(MDd)战MT ...
- C# 类动态添加属性、方法
问题: 需要动态为WPF中的DataGrid添加列,并动态绑定相应数据.(此处仅实现动态属性的添加和使用,关于动态方法的添加和使用详见推荐阅读) 实现关键点: 目标类继承DynamicObject,添 ...
- 踩坑事件:不能对基于文本的临时表使用sql insert语句
先来描述一下问题: 如果你是从基于文本的数据源来创建DataFrame的,当你将DataFrame注册为临时表后,如果对这个临时表进行insert into 操作,会抛出异常的. 问题答案参见:htt ...
- NOIP2013D1T3货车运输
题目链接:http://www.luogu.org/problem/show?pid=1967 数据:http://www.cnblogs.com/wanglichao/p/5592058.html ...
- ZeroMQ接口函数之 :zmq_plain - 明文认证
ZeroMQ 官方地址 :http://api.zeromq.org/4-2:zmq_plain zmq_plain(7) ØMQ Manual - ØMQ/4.1.0 Name zmq_plain ...
- [转]关于AS3 Socket和TCP不得不说的三两事
磨刀不误砍柴工,让我们从概念入手,逐步深入. 所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过"套接字"向网络 ...
- Odoo Email Template Problem
Odoo 8.0 的邮件模板是运行自jiajin2沙盒中的阉割版mako,像自定义及 <%%>等功能都无法正常使用. 且for-loop %for %endfor不能嵌套在table中使用 ...
- jquery实现限制textarea输入字数
ie中可用onpropertychange监听改变事件 火狐和谷歌可用oninput监听改变事件 综合: //使系统中class='text-length'的输入框只能输入200字符(主要用于text ...