javascript实现原生ajax的几种方法

自从js有了各种框架之后,比如jquery,使用ajax已经变的相当简单了。但有时候为了追求简洁,可能项目中不需要加载jquery这种庞大的js插件。但又要使用到ajax这种功能该如何办呢?下面和大家分享几种利用javascript实现原生ajax的方法。

首先实现ajax之前必须要创建一个 XMLHttpRequest 对象的。如果不支持创建该对象的浏览器,则需要创建 ActiveXObject,具体方法如下:

var xmlHttp;
function createxmlHttpRequest(){
if(window.ActiveXObject){
	xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}else if(window.XMLHttpRequest)
	xmlHttp=new XMLHttpRequest();
}

(1)下面使用上面创建的xmlHttp实现最简单的ajax get请求:

function doGet(url){//注意在传参数值的时候最好使用encodeURI处理一下,防止乱码
	createxmlHttpRequest();
	xmlHttp.open("GET",url);
	xmlHttp.send(null);
	xmlHttp.onreadystatechange=function(){
		if(xmlHttp.readyState==4&&xmlHttp.status==200){
			alert(‘success‘);
		}else{
			alert(‘fail‘);
		}
	}
}

(2)使用上面创建的xmlHttp实现最简单的ajax post请求:

function doPost(url,data){//注意在传参数值的时候最好使用encodeURI处理一下,防止乱码
	createxmlHttpRequest();
	xmlHttp.open("POST",url);
	xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	xmlHttp.send(data);
	xmlHttp.onreadystatechange=function(){
		if(xmlHttp.readyState==4&&xmlHttp.status==200){
			alert(‘success‘);
		}else{
			alert(‘fail‘);
		}
	}
}

(3)下面再分享一个从网上看到的模拟jquery的$.ajax方法的封装:

var createAjax=function(){
    var xhr=null;
    try{//IE系列浏览器
        xhr=new ActiveXObject("microsoft.xmlhttp");
    }catch(e1){
        try{//非IE浏览器
            xhr=new XMLHttpRequest();
        }catch(e2){
            window.alert("您的浏览器不支持ajax,请更换!");
        }
    }
    return xhr;
};
var ajax=function(conf){
    var type=conf.type;//type参数,可选 
    var url=conf.url;//url参数,必填 
    var data=conf.data;//data参数可选,只有在post请求时需要 
    var dataType=conf.dataType;//datatype参数可选 
    var success=conf.success;//回调函数可选
    if(type==null){//type参数可选,默认为get
        type="get";
    }
    if(dataType==null){//dataType参数可选,默认为text
        dataType="text";
    }
    var xhr=createAjax();
    xhr.open(type,url,true);
    if(type=="GET"||type=="get"){
        xhr.send(null);
    }else if(type=="POST"||type=="post"){
        xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
        xhr.send(data);
    }
    xhr.onreadystatechange=function(){
        if(xhr.readyState==4&&xhr.status==200){
            if(dataType=="text"||dataType=="TEXT"){
                if(success!=null){//普通文本
                    success(xhr.responseText);
                }
            }else if(dataType=="xml"||dataType=="XML"){
                if(success!=null){//接收xml文档
                    success(xhr.responseXML);
                }
            }else if(dataType=="json"||dataType=="JSON"){
                if(success!=null){//将json字符串转换为js对象
                    success(eval("("+xhr.responseText+")"));
                }
            }
        }
    };
};

该方法使用也很简单,和jquery的$.ajax方法一样,不过没那么多的参数。仅仅是简单的实现了一些基本的ajax功能。使用方法如下:

ajax({
    type:"post",//post或者get,非必须
    url:"test.jsp",//必须的
    data:"name=dipoo&info=good",//非必须
    dataType:"json",//text/xml/json,非必须
    success:function(data){//回调函数,非必须
        alert(data.name);
    }
});
时间: 2024-07-30 14:25:48

javascript实现原生ajax的几种方法的相关文章

javascript实现原生ajax

自从javascript有了各种框架之后,比如jquery,使用ajax已经变的相当简单了.但有时候为了追求简洁,可能项目中不需要加载jquery这种庞大的js插件.但又要使用到ajax这种功能该如何办呢?下面和大家分享javascript实现原生ajax的方法. 实现ajax之前必须要创建一个 XMLHttpRequest 对象.如果不支持创建该对象的浏览器,则需要创建 ActiveXObject,具体方法如下: var xmlHttp; function createxmlHttpReque

javascript浮点数转换成整数三种方法

将浮点数转换成整数方法有很多,分享三种常用方法. Summary 暂时我就想到3个方法而已.如果读者想到其他好用方法,也可以交流一下 parseInt位运算符Math.floor Math.ceil Description 一.parseInt 1. 实例 parseInt("13nash");//13 parseInt("")// NaN parseInt("0xA") //10(十六进制) parseInt(" 13")/

JavaScript解决命名冲突的一种方法

过程化编码 过程化编码, 表现为 定义若干函数,然后调用定义函数, 随着页面交互逻辑变化, 从简单到复杂, 定义的所有函数.和变量 都挂在 window对象上, window对象 编程者子自定义变量名称 规模会愈来愈额庞大,在后面开发和维护的过程中, 很容易导致函数名称冲突,引起意想不到问题. 例如, 之前有个同事定义了 一个 sample 函数, N长时间后, 另一个同事又定义了一个含义不同的同名函数sample,则前以同事的代码就有问题了. 模块化方法一则 JS函数内部相当于一个小的程序空间

JavaScript的原生Ajax解析

通过JavaScript的Ajax进行详细的解析过程,从而更好的了解Jquery的Ajax. 顺带,我会在后面把我整理的一整套CSS3,PHP,MYSQL的开发的笔记打包放到百度云,有需要可以直接去百度云下载,这样以后你们开发就可以直接翻笔记不用百度搜那么麻烦了.  笔记链接:http://pan.baidu.com/s/1qYdQdKK 密码:pvj2   一.JavaScript原生ajax1.原生ajax代码: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

javascript中数组去重的4种方法

面试前端必须准备的一道问题:怎样去掉Javascript的Array的重复项.在最近面试中,百度.腾讯.盛大等都在面试里出过这个题目.这个问题看起来简单,但其实暗藏杀机. 考的不仅仅是实现这个功能,更能看出你对计算机程序执行的深入理解. 我总共想出了三种算法来实现这个目的: 方法一: Array.prototype.unique1 = function() {     var n = []; //一个新的临时数组     for(var i = 0; i < this.length; i++)

jquery ajax的几种方法

当我们需要局部刷新的时候,使用ajax可以更好的实现用户体验: 第一种方法,使用$.post,这种方式要先什么url和请求参数,也是如下的args,如果没有请求参数,就不需要. 1 $(function(){ 2 var url="bookServlet"; 3 var idVal=$.trim(this.name); 4 var auantityVal=$.trim(this.value); 5 var args={"method":"updateIte

javascript 实现字符串反转的两种方法

第一种方法:利用数组方法 //先split将字串变成单字数组,然后reverse()反转,然后将数组拼接回字串 var str = "abcdef"; str.split("").reverse().join('') 第二种方法:暴力遍历 var str="abcdef" ,str2=""; var i=str.length; i=i-1; for (var x = i; x >=0; x--) { str2 += st

原生javascript 获得css样式有几种方法?

css 样式分为行内样式和 外部样式: 1.javascript 获得行内样式 : 可以使用  ele.style."属性名称"(如果遇到属性名称带有"-", 需要使用驼峰方法,例如 background-color 改为 backgroundColor); 2.javascript 获得外部样式 ( getComputedStyle 可以获得style 的值也可以获得外部样式表的css) 获得外部样式可以使用浏览器提供的 "window.getCompu

javascript实现原生ajax的方法

<script> var xmlHttp; function createxmlHttpRequest() { if (window.ActiveXObject) { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } else if (window.XMLHttpRequest) { xmlHttp = new XMLHttpRequest(); } } function doGet(url) { // 注意在传参数值的