原生js实现ajax方法(超简单)

上一篇文章写到原生js取代jquery的一些常用函数

方法

,那么,ajax如何实现呢?如下是一个比较完整的ajax()

rush:js;"> function ajax(){ var ajaxData = { type:arguments[0].type || "GET",url:arguments[0].url || "",async:arguments[0].async || "true",data:arguments[0].data || null,dataType:arguments[0].dataType || "text",contentType:arguments[0].contentType || "application/x-www-form-urlencoded",beforeSend:arguments[0].beforeSend || function(){},success:arguments[0].success || function(){},error:arguments[0].error || function(){} } ajaxData.beforeSend() var xhr = createxmlHttpRequest(); xhr.responseType=ajaxData.dataType; xhr.open(ajaxData.type,ajaxData.url,ajaxData.async); xhr.setRequestHeader("Content-Type",ajaxData.contentType); xhr.send(convertData(ajaxData.data)); xhr.onreadystatechange = function() { if (xhr.readyState == 4) { if(xhr.status == 200){ ajaxData.success(xhr.response) }else{ ajaxData.error() } } } }

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

function convertData(data){
if( typeof data === 'object' ){
var convertResult = "" ;
for(var c in data){
convertResult+= c + "=" + data[c] + "&";
}
convertResult=convertResult.substring(0,convertResult.length-1)
return convertResult;
}else{
return data;
}
}

使用格式跟jquery的ajax差不多:

rush:js;"> ajax({ type:"POST",url:"ajax.PHP",dataType:"json",data:{"val1":"abc","val2":123,"val3":"456"},beforeSend:function(){ //some js code },success:function(msg){ console.log(msg) },error:function(){ console.log("error") } })

以上就是小编为大家带来的原生js实现ajax方法(超简单)的全部内容了,希望对大家有所帮助,多多支持编程之家~

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...