自封装ajax
项目中有时候用不到jq,需要了解xmlhttp原理,自己写一套函数请求和发送数据!
- /* 封装ajax函数
- * @param {string}opt.type http连接的方式,包括POST和GET两种方式
- * @param {string}opt.url 发送请求的url
- * @param {boolean}opt.async 是否为异步请求,true为异步的,false为同步的
- * @param {object}opt.data 发送的参数,格式为对象类型
- * @param {function}opt.success ajax发送并接收成功调用的回调函数
- */
- function ajax(options) {
- options = options || {};
- options.method = options.method.toUpperCase() || 'POST';
- options.url = options.url || '';
- options.async = options.async || true;
- options.data = options.data || null;
- options.success = options.success || function () {};
- options.error = options.error || function () {};
- var xmlhttp = null;
- if(XMLHttpRequest) {
- xmlhttp = new XMLHttpRequest();
- } else {
- xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
- }
- var params = [];
- for(key in params) {
- params.push(key + '=' + params[key]);
- }
- var postData = params.join('&');
- if(options.method == 'GET') {
- xmlhttp.open(options.method, options.url, options.async);
- xmlhttp.send();
- } else if (options.method == 'POST') {
- xmlhttp.open(options.method, options.url, options.async);
- xmlhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
- xmlhttp.send(postData);
- }
- xmlhttp.onreadystatechange = function () {
- if(xmlhttp.readyState == 4) {
- switch (xmlhttp.status) {
- case 200:
- options.success(xmlhttp.responseText);
- break;
- case 404:
- options.error('Not Found');
- break;
- default:
- options.error('未知错误');
- }
- }
- };
- }
- // 使用
- ajax({
- method: 'POST',
- url: './server/demo_get.json',
- data: {
- data1: 'aaa',
- data2: 'bbb'
- },
- success: function (response) {
- console.log(response);
- },
- error: function (err) {
- console.log(err);
- }
- });
这个是从网上学习并改造的,自己重写了一遍,可以运行。
自封装ajax的更多相关文章
- 使用原生JS封装Ajax
使用原生 的JS封装 Ajax,实现 仿JQuery的Ajax,post,get三种异步请求方式: var MAjax = { //根据浏览器创建异步对象 createXhr: function () ...
- 原生javascript封装ajax和jsonp
在我们请求数据时,完成页面跨域,利用原生JS封装的ajax和jsonp: <!DOCTYPE html> <html lang="en"> <head ...
- AJAX编程-封装ajax工具函数
即 Asynchronous [e'sɪŋkrənəs] Javascript And XML,AJAX 不是一门的新的语言,而是对现有技术的综合利用.本质是在HTTP协议的基础上以异步的方式与服务器 ...
- javascript 【封装AJAX】
post function createXHR() { if (typeof XMLHttpRequest != 'undefined') { return new XMLHttpRequest(); ...
- 封装ajax原理
封装ajax原理 首先处理 用户如果不传某些参数,设置默认值 type默认get 默认url为当前页 默认async方式请求 data数据默认为{} 处理用户传进来的参数对象 遍历,拼接成key=va ...
- 04.封装ajax
<script> //封装ajax // 函数名 ajax // 函数的参数 // url: 请求的地址 // type: 请求的方式 get /post // data: 要上传的数据 ...
- 自定义封装ajax,复制即可用
支持get.post请求 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> ...
- 封装ajax,让调用变得简单优化
思考一下: 通常我们在使用ajax来发送接口请求时,每一次都会调用ajax固定的元素,比如data.url.method.success.error等.那么我们想一下能不能先把ajax封装起来,在每次 ...
- 原生JS封装ajax方法
http://blog.sucaijiayuan.com/article/89 jquery框架的ajax方法固然好用,但是假如某天我们的项目不能引入jquery或项目需求很简单,没有很多交互功能,只 ...
- 封装Ajax框架!(代码篇)
写在前面的话,如果中间有什么不明白的,请先看封装ajax框架!(前言篇) 1.添写一个封闭函数 (function(){})(); 在一个项目中,可能会引用多个js框架,如果函数名相同,会有命名冲突, ...
随机推荐
- app.use和app.get的区别及解析
转载至:http://blog.csdn.net/wthfeng/article/details/53366169 写在前面:最近研究nodejs及其web框架express,对app.use和app ...
- adminlte+layui框架搭建3 - layui弹出层
在amdinlte首页引入layui.js 和layui.css后添加代码 <script> layui.use(['layer'], function () { var layer = ...
- 移动端适配1px问题
(function(document) { var dcl = document.documentElement, wh; var scale = 1/window.devicePixelRatio; ...
- SQL语句之行操作
SQL语句系列 1.SQL语句之行操作 2.SQL语句之表操作 3.SQL语句之数据库操作 4.SQL语句之用户管理 关系型数据库的存储形式 在关系型数据库中,数据都是以类似于Excel表格的形式存储 ...
- SQL Server2012如何更改服务器的名称
Problem: sql server 2012 安装完毕后,连接数据库只能使用 机器名\数据库实例 的方式,想用 localhost 或 . 作为服务器名称不可以 Solution: 参考:http ...
- Go 语言 基础 【第一篇】:package fmt导入
package main 解释:只要你 一个可执行 程序
- HDU6470 ()矩阵快速幂
http://acm.hdu.edu.cn/showproblem.php?pid=6470 题意:f[n] = f[n-1] + f[n-2]*2 + n^3; f[1] =1 ; f[2] = 2 ...
- JS window,onload 与 $().read()
JS:window.onload的使用介绍 .在body标签里面 .在JS语句调用 .同时调用多个函数 .JS调用多个函数 .自定义的函数多次调用 jquery $(document).ready() ...
- PIE SDK栅格数据集的读写
1. 功能简介 栅格数据包含很多信息,在数据的运用中需要对数据的信息进行读取或写入,目前PIE SDK支持多种数据格式的数据读取和写入,下面对栅格数据格式的数据读写功能进行介绍. 2. 功能实现说明 ...
- .reverse ,join,split区分
* 1:arrayObject.reverse() * 注意: 该方法会改变原来的数组,而不会创建新的数组. * 2:arrayObject.join() * 注意:join() 方法用于把数组中的所 ...