原生JS实现$.ajax
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的更多相关文章
- 原生js实现Ajax
一般来说,大家可能都会习惯用JQuery提供的Ajax方法,但是用原生的js怎么去实现Ajax方法呢? JQuery提供的Ajax方法: $.ajax({ url: , type: '', dataT ...
- 使用原生js写ajax
// 使用原生js 封装ajax // 兼容xhr对象 function createXHR(){ if(typeof XMLHttpRequest != "undefined") ...
- 表单验证--通过原生js模仿ajax的异步交互
今天给大家带来个福利,我也是刚刚学习的很实用的一个东西,通过原生js模仿ajax的异步交互. 我的博客只是给那些新手看的大神勿喷,写的不好可留言,请指出. 因为当初自己学的时候一个问题不会找人问,知道 ...
- 原生JS实现Ajax及Ajax的跨域请求
前 言 如今,从事前端方面的程序猿们,如果,不懂一些前后台的数据交互方面的知识的话,估计都不太好意思说自己是程序猿.当然,如今有着许多的框架,都有相对应的前后台数据交互的方法. ...
- 原生JS的Ajax技术
1.同步和异步 同步现象:客户端发送请求到服务器端,当服务器返回响应之前,客户端都处于等待 卡死状态 异步现象:客户端发送请求到服务器端,无论服务器是否返回响应,客户端都可以随意做其他事情,不会被卡 ...
- 原生js中用Ajax进行get传参
原生js中用Ajax进行get传参 案例: <!DOCTYPE html> <html> <head> <meta charset="UTF-8&q ...
- 原生js实现ajax与jquery的ajax库,及json
这是一篇笔记博客, Ajax: 和服务器进行数据交换(异步) 用js实现复杂的原理:用于发送请求的对象在不同的浏览器中是不同的 同源策略:ajax发送请求的url地址与服务器地址必须是同一域名,协议, ...
- 用原生js实现ajax、jsonp
转载: http://www.cnblogs.com/yangheng/p/6065910.html 一.原生js实现ajax $.ajax({ url: '', type: 'post', data ...
- 原生JS实现ajax 发送post请求
1. [代码]原生JS实现ajax 发送post请求 <script> var oStr = ''; var postData = {}; var oAjax = null; //post ...
- 原生js写Ajax
//原生js写ajax就像打电话 //打电话分下面4步//1.拿出手机//2.拨号//3.说话//4.挺对方说话 //ajax也分下面4步//1.创建ajax对象//2.连接到服务器//3.发送请求( ...
随机推荐
- bash中的pasue
#!/bin/bash echo 按任意键继续 read -n
- vs code配置
新版的用户设置不是代码, https://blog.csdn.net/zhaojia92/article/details/53862840 https://www.cnblogs.com/why-no ...
- Lodop打印控件指定打印任务某几页
使用Lodop打印控件进行打印开发,有时候一个任务里有多页,例如各种合同之类的,客户端用户在使用过程中,可能有某一页打印后发现需要修改,这时候不必再把整个任务重新打印一遍,只需要打印需要修改的那页重新 ...
- Lodop打印维护PRINT_SETUP本地缓存ini文件
针对千差万别的客户端,Lodop提供了打印维护(PRINT_SETUP),可以针对某个客户端微调,调整结果保存在客户端本地,不会影响其他访问网站的用户的使用. 打印维护使用方法:1.PRINT_INI ...
- How to sign app
codesign --display --verbose=4 /applications/qq.app codesign --display --entitlements - /application ...
- Siki的虚幻第一季
空项目.一闪而过的解决方法 命名空间std::cout的作用: int ,long , long long类型的范围 unsigned int 0-4294967295 int 21474 ...
- JSON 解析 (二)—— Jackson的使用
Jackson是基于Java语言的一种JSON和Java对象的数据处理工具.功能上简单易用,性能上根据目前主流转换工具比较,Jackson相对比较高效. <dependency> < ...
- 为什么Elasticsearch查询变得这么慢了?
参考内容:https://mp.weixin.qq.com/s/RTpBaFpNELQCO6VE0KMfsw
- BZOJ2434 [NOI2011] 阿狸的打字机 【树链剖分】【线段树】【fail树】【AC自动机】
题目分析: 画一下fail树,就会发现就是x的子树中属于y路径的,把y剖分一下,用线段树处理 $O(n*log^2 n)$. 代码: #include<bits/stdc++.h> usi ...
- BZOJ 1977 严格次小生成树(算竞进阶习题)
树上倍增+kruskal 要找严格次小生成树,肯定先要找到最小生成树. 我们先把最小生成树的边找出来建树,然后依次枚举非树边,容易想到一种方式: 对于每条非树边(u,v),他会与树上的两个点构成环,我 ...