调用请求:

var obj = {
url:"", //url地址 例如:test.php
method:"", //get或post(大小写不限) 例如:get
async:true, //true:异步请求 false:同步请求 默认true
data:{ //所需要传输的数据(被注释内容为测试所用)
// name:"战斗机",
// age:20,
// husband:null,
// arr:["one","two","three"],
// dimensional:{
// bust:100,
// waist:60,
// hipline:90
// }
},
success:function (res) { //传输成功的回调函数
//console.log(res)
},
fail:function (res) { //失败的回调函数 }
}
myAjax(obj);

封装函数:

//myAjax()
function myAjax(obj) {
// 1.创建http请求
var xmlhttp;
if (window.XMLHttpRequest) {
//兼容IE7+,firefox,chrome, opera, safari
xmlhttp = new XMLHttpRequest();
}else{
//兼容IE6,IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
// 1.1声明变量
var fangShi = obj.method.toUpperCase();
var url = obj.url;
var async = true;
if(obj.async == false){
async = false;
}
console.log(async);
// 1.2遍历传输内容
var data = ""; //data内容重组
(function props(a){
for(var prop in a){
if (a.hasOwnProperty(prop)) {
// console.log(prop);
// console.log(a[prop]); if (a[prop] instanceof Object && !(a[prop] instanceof Array)) {
props(a[prop]);
}else{
// 遍历出来后如果不是对象则进行拼接
data += prop + "=" + a[prop] +"&";
}
}
} //for end
return data;
}(obj.data)) // 2.发起请求
if (fangShi == "GET") { //get请求
xmlhttp.open(fangShi, url + "?" + data, async);
xmlhttp.send();
}else if (fangShi == "POST") { //post请求
xmlhttp.open(fangShi, url, async);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(data);
}else{
alert("请求方式不在支持范围")
}
// 3.接受数据
xmlhttp.onreadystatechange = function(){
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
var resp = JSON.parse(xmlhttp.responseText);
obj.success(resp);
}else{
obj.fail(resp);
}
}
}

返回值的数据类型不够齐全,如有需要再做修改

封装简单的Ajax的更多相关文章

  1. jQuery-实现简单的Ajax请求封装

    封装的意义在于复用,在于减少重复的代码. 我在项目中做了简单的Ajax请求封装,实现方式如下: //封装Ajax请求 $.extend({ ajaxDirect:function(url,type,d ...

  2. jsonp其实很简单【ajax跨域请求】

    js便签笔记(13)——jsonp其实很简单[ajax跨域请求] 前两天被问到ajax跨域如何解决,还真被问住了,光知道有个什么jsonp,迷迷糊糊的没有说上来.抱着有问题必须解决的态度,我看了许多资 ...

  3. 通过简单的ajax验证是否存在已有的用户名

    首先来说说我对ajax的理解:简单地来说就是在不重新刷新页面的情况下,实现数据的调用获得更新. 我在这里介绍的是要过jquery封装好的ajax,大家可以去了解一下使用原生的XMLHttpReques ...

  4. 原生JS封装简单动画效果

    原生JS封装简单动画效果 一致使用各种插件,有时候对原生JS陌生了起来,所以决定封装一个简单动画效果,熟悉JS原生代码 function animate(obj, target,num){ if(ob ...

  5. 不借助jquery封装好的ajax,你能用js手写ajax框架吗

    不借助jquery封装好的ajax,你能手写ajax框架吗?最基础的ajax框架,一起来围观吧. .创建XMLHttpRequest对象 var xhr = new XMLHttpRequest(); ...

  6. jQuery简单的Ajax调用示例

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

  7. 利用jQuery与.ashx完成简单的Ajax

    在ASP.NET同样可以与其它编程语言一样,利用前台的Ajax技术,只是需要注意的是,后台的处理程序不再是一个aspx页面中的Page_Load,而且ASP.NET独有的“一般处理程序”.ashx,下 ...

  8. 简单的Ajax实例

    由于刚刚接触Ajax,所以在网上搜了一下如何实现简单的Ajax,在此写下来,也方便自己以后学习 什么是Ajax? 通过在后台与服务器进行少量的数据交换,Ajax可以使网页实现异步更新,这意味着可以在不 ...

  9. JQ简单操作Ajax笔记

    JQ对ajax进行了封装,底层$.ajax().第二层是.load(),$.get(),$.post().第三层是$.getScript()和$.getJSON(). load(url selecto ...

随机推荐

  1. [转]The Regular Expression Object Model

    本文转自:https://docs.microsoft.com/en-us/dotnet/standard/base-types/the-regular-expression-object-model ...

  2. iOS开发时获取第一响应者

    上篇中提到键盘相应时间中用到了获取当前第一响应者的方法是苹果的是有方法,无法上传到App Store,本文将介绍一种非常简单的且未用到私有API的方法来获取当前第一响应者. 实现思路:用到的iOS A ...

  3. Angular 学习笔记(四)

    作用域和控制器的交互情况: 1.控制器通过作用域对模板暴露一些方法供其调用 2.控制器中定义的一些方法可改变注册在作用域下的数据模型 3.控制器在某些场合可能需设置监听器来监听作用域中的数据模型:这些 ...

  4. itest(爱测试) 4.0.0 发布,开源敏捷测试管理 &BUG 跟踪管理软件

      v4.0.0 下载地址 :itest下载 itest 简介:查看简介 V4.0.0 根据用户反馈,共增加了29个更新:其中有15 个功能增强和14个BUG修复 :UI更加清爽,用例执行和用例复制粘 ...

  5. 04-align-content 它对于当单行是没有效果的

    /* 运用在父级元素上  align-content:   它通产与子元素的div{margin:10px 一起联合使用 }*/ ps==>用在子项出现换行的情况下,并是多行的情况下哦.运用在子 ...

  6. 动态内存的分配(new delete malloc free)

    new和malloc的区别是什么?-new关键字是C++的一部分,在所有的C++编译器中都被支持-malloc是由C库提供的函数,在某些系统开发中是不能调用的-new以具体类型为单位进行内存分配-ma ...

  7. selenium定位元素的八种方法

    web driver提供了八种元素定位的方法: id, name, class name, tag name, link text, partial link text, xpath, css sel ...

  8. MongoDB介绍(一)

    MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功 ...

  9. LG4824 「USACO2015FEB」(Silver)Censoring KMP+栈

    问题描述 LG4824 题解 大概需要回顾(看了题解) KMP 先对要删除的 模式串 进行自我匹配,求出 \(\mathrm{fail}\) 然后再扫 文本串 的过程中记录一下每个字符匹配的最大长度, ...

  10. mysql用户与权限操作

    本文所有操作均在mysql8.1下验证,mysql5.x部分语句不适用. 1.创建用户 '; # 创建用户test,密码123456,%表示允许在所有主机登陆 用户表为mysql库小的user表,Ho ...