function ajax(obj){
obj=obj||{};
obj.type=(obj.type||'GET').toUpperCase();
obj.dataType=obj.dataType||'json';
var params=formatParams(obj.data);//参数格式化 //step1:兼容性创建对象
if(window.XMLHttpRequest){
var xhr=new XMLHttpRequest();
}
else{
var xhr=new ActiveXObject('Microsoft.XMLHTTP');
} //step4: 接收
xhr.onreadystatechange=function(){
if(xhr.readtState==4){
if(xhr.state>=200 && xhr.status<300){
obj.success&&obj.success(xhr.responseText,xhr.responseXML);
}
else{
obj.error&&obj.error(xhr.status);
}
}
} //step2 step3:连接 和 发送
if(obj.type=='GET'){
xhr.open('GET',obj.url+'?'+params,true);
xhr.send(null);
}
else if(obj.type=='POST'){
xhr.open('POST',obj.url,true);
//设置请求头,以表单形式提交数据
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
xhr.send(params);
} //辅助函数,格式化参数
function formatParams(data){
var arr=[];
for(var name in data){
arr.push(encodeURICompontent(name)+"="+encodeURICompontent(data[name]));
}
//设置随机数,防止缓存
arr.push("t="+Math.random());
return arr.join("&");
} }

使用:

 ajax({
url:"www.baidu.com",
type:"GET",
dataType:"json",
data:{a:"123",b:"456"},
success:function(response.xml){//todo something},
error:function(status){//todo something}
})

原生JS实现$.ajax的更多相关文章

  1. 原生js实现Ajax

    一般来说,大家可能都会习惯用JQuery提供的Ajax方法,但是用原生的js怎么去实现Ajax方法呢? JQuery提供的Ajax方法: $.ajax({ url: , type: '', dataT ...

  2. 使用原生js写ajax

    // 使用原生js 封装ajax // 兼容xhr对象 function createXHR(){ if(typeof XMLHttpRequest != "undefined") ...

  3. 表单验证--通过原生js模仿ajax的异步交互

    今天给大家带来个福利,我也是刚刚学习的很实用的一个东西,通过原生js模仿ajax的异步交互. 我的博客只是给那些新手看的大神勿喷,写的不好可留言,请指出. 因为当初自己学的时候一个问题不会找人问,知道 ...

  4. 原生JS实现Ajax及Ajax的跨域请求

      前  言          如今,从事前端方面的程序猿们,如果,不懂一些前后台的数据交互方面的知识的话,估计都不太好意思说自己是程序猿.当然,如今有着许多的框架,都有相对应的前后台数据交互的方法. ...

  5. 原生JS的Ajax技术

    1.同步和异步 同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待  卡死状态 异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都可以随意做其他事情,不会被卡 ...

  6. 原生js中用Ajax进行get传参

    原生js中用Ajax进行get传参 案例: <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q ...

  7. 原生js实现ajax与jquery的ajax库,及json

    这是一篇笔记博客, Ajax: 和服务器进行数据交换(异步) 用js实现复杂的原理:用于发送请求的对象在不同的浏览器中是不同的 同源策略:ajax发送请求的url地址与服务器地址必须是同一域名,协议, ...

  8. 用原生js实现ajax、jsonp

    转载: http://www.cnblogs.com/yangheng/p/6065910.html 一.原生js实现ajax $.ajax({ url: '', type: 'post', data ...

  9. 原生JS实现ajax 发送post请求

    1. [代码]原生JS实现ajax 发送post请求 <script> var oStr = ''; var postData = {}; var oAjax = null; //post ...

  10. 原生js写Ajax

    //原生js写ajax就像打电话 //打电话分下面4步//1.拿出手机//2.拨号//3.说话//4.挺对方说话 //ajax也分下面4步//1.创建ajax对象//2.连接到服务器//3.发送请求( ...

随机推荐

  1. vscode運行vue和html

    html 选中html文件,右键选择view in broswer.

  2. TestNG之使用ReportNG生成测试报告

    TestNG使用ReportNG生成测试报告会更加美观. 依赖包 <!--testNG报告依赖包--> <dependency> <groupId>org.test ...

  3. python 计算机基础

    1.什么是编程语言. 语言是一个事物与另一个事物沟通的介质. 编程语言是程序员与计算机沟通的介质. 2.什么是编程. 编程是人按照某种语法规范设计出计算机能够识别的语言 表达的结果是程序,程序就是一系 ...

  4. Windows Server 2012 添加角色时出现 failed to open runspace pool

    先把所有的Windows Server 2012的更新更新了.再来添加服务器角色.就不会再出现 The Server Manager WinRM plug-in might be corrupted ...

  5. 简单触发器实例insert

    create or replace trigger tr_tb_if_archivesafter inserton tb_if_archivesfor each rowdeclarepragma au ...

  6. WPF TextBox控件中文字实现垂直居中

    TextBox纵向长度比较长但文字字体比较小的时候,在输入时就会发现文字不是垂直居中的. 而使用中我们发现,TextBox虽然可以设置文字的水平对齐方式,但却没有相应的属性让我们来调节他的垂直对齐方式 ...

  7. C语言学习IDE和基本程序结构

    任何一门语言的学习,首先要有一个编辑器或集成开发工具IDE, 要不然代码都不知道写到什么地方.对于我这种小白来说,安装个IDE是最好不过的,因为C 语言也是编译语言,写完代码之后,要先编译才能运行,而 ...

  8. NIKKEI Programming Contest 2019 翻车记

    A:签到. #include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> ...

  9. Python字符串和列表的内置方法

    一.字符串内置方法 1.strip()  删除开头和结尾的字符串 s.strip(rm) 删除s字符串中开头,结尾处,位于rm删除序列的字符串 s.lstrip(rm) 删除s字符串中开头位于rm删除 ...

  10. Codeforces986E Prince's Problem 【虚树】【可持久化线段树】【树状数组】

    我很喜欢这道题. 题目大意: 给出一棵带点权树.对每个询问$ u,v,x $,求$\prod_{i \in P(u,v)}gcd(ai,x)$.其中$ P(u,v) $表示$ u $到$ v $的路径 ...