原生javascript包装一个ajax方法

调用AJAX

 1 <script type="text/javascript" src="ajax.js"></script>
 2 <script type="text/javascript">
 3     //调用包装好的ajax方法
 4     ajax({
 5         method : "get",
 6         url : "get.php",
 7         asyn : true,
 8         data : "user=zym&password=1234",
 9         fn : function( res ){
10             console.log( res );
11         }
12     });
13 </script>

打包好的ajax方法函数:

 1 function ajax( myJson ){
 2     //新建ajax对象
 3     var xhr = null;
 4     window.XMLHttpRequest?(xhr=new XMLHttpRequest()):(xhr=new ActiveXObject("Microsoft.XMLHTTP"));
 5     //定义数据传输方法“get”或“post”,如果没有写,那么默认的是用“get”方法!
 6     var method = myJson.method||"get";
 7     //定义数据传输的地址!
 8     var url = myJson.url;
 9     //定义数据加载方式(同步或异步),默认的情况下,使用ajax,都是异步加载!
10     var asyn = myJson.asyn||true;
11     //定义传输的具体数据!
12     var data = myJson.data;
13     //成功之后执行的方法!
14     var fn = myJson.fn;
15     //第一种情况:如果是用get方法,并且data是存在的,就执行:
16     if(method=="get"&&data){
17         xhr.open(method,url+"?"+data+"&"+Math.random(),asyn);
18     }
19     //第二种情况:如果是用post方法,并且data是存在的,就执行:
20     if(method=="post"&&data){
21         xhr.open(method,url,asyn);
22         xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
23         xhr.send(data);
24     }else{
25         xhr.send();
26     }
27     //数据传输成功之后
28     xhr.onreadystatechange=function(){
29         if(xhr.readyState==4){
30             if(xhr.status>=200&&xhr.status<300){
31                 fn(xhr.responseText);
32             }else{
33                 alert("程序出错!");
34             }
35         }
36     }
37 }
时间: 2024-08-09 06:31:33

原生javascript包装一个ajax方法的相关文章

javascript 写一个ajax 自动拦截,并下载数据

<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" con

用原生js实现一个new方法

首先写一个父类方法(包含参数name,age): function Person(name,age){ this.name = name; this.age = age; } new一个Person的实例p1做研究对比 var p1 = new Person("Richard", 22); //此时p1包含name.age属性,同时p1的__proto__指向Person的prototype p1.name;//Richard p1.age;//22 自定义一个New函数: //通过分

原生javaScript中使用Ajax实现异步通信

AJAX本质就是在HTTP协议的基础上以异步的方式与服务器进行通信,所谓异步,就是指某段程序执行时不会阻塞其它程序执行,其表现形式为程序的执行顺序不依赖程序本身的书写顺序,相反则为同步. 以下开始简单介绍一下使用原生JS来如何实现AJAX异步通信 第一步:创建一个能够实现异步请求的对象  new XMLHttpRequest var xhr=new XMLHttpRequest(); console.log(xhr.readyState);//此时的状态码输出为0,它会返回XMLHTTP请求当前

Ajax--Ajax基于原生javascript:创建Ajax对象、链接服务器、发送请求、接受响应结果

我的笔记:Ajax概述 一.Ajax应用小例子(get提交) register_get.html (客户端) 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="UTF-8"> 5 <title>Title</title> 6 <style> 7 .tips{ 8 color:red; 9 } 10 </

使用原生JS封装一个ajax

function ajax(data){ //第一步,创建XHR对象 var xhr = null; if(window.XMLHttpRequest){ xhr = new XMLHttpRequest();//标准的浏览器 }else{ xhr = new ActiveXObject('Microsoft.XMLHTTP');//万恶的IE浏览器 } //第二步,准备发送前的一些配置文件 var type = data.type == 'get' ? 'get' : 'post'; var

原生JavaScript时间倒计时的方法

这个思路是来源用%的方法来做的: 以前用%做过转秒的 http://taobao.fm/archives/666 现在用来做倒计时方法: 需要用到的方法是getTime:获取距离1970年1月1日午夜00:00之间的毫秒差: var targetTime=new Date("2016/01/25 16:59:59"); 这个是优秀的写法:下面是有问题的写法:因为IE678下不兼容的:需要把-改成/才好: var targetTime=new Date("2016-01-25

MUI常用脚本及原生JavaScript常用操作元素方法

1.mui元素转换html元素 var obj=mui("#id")[0]; 2.事件绑定 var btn = document.getElementById("login"); btn.addEventListener('tap',function(){ //事件处理 }); /*给address内的所有含有ajaxbtn类名的元素单击事件 */ mui('.address').on('tap','.ajaxbtn',function(){    dpajax(t

javascript 写一个 map方法

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <script> Array.prototype.map = function(fn){ for (i=0;i<this.length;i++){ v = t

使用对象封装ajax方法实现可重复调用

在项目中经常用到AJAX调用远程数据,每一次调用,都得写一个ajax方法,这就造成了重复代码过多,可读性也不够强,所以,我一般都是封装起来,需要的时候调用. var imgUpload = { //ajax请求数据 method:function(murl,mdata,method,success){ $.ajax({ type: method, url: murl, dataType : "jsonp", data: mdata, timeout: 20000, error: fun