使用原生js写ajax实例(推荐)
程序员文章站
2023-12-01 16:02:04
实例如下:
// 使用原生js 封装ajax
// 兼容xhr对象
function createxhr(){
if(typeof xmlhttpreq...
实例如下:
// 使用原生js 封装ajax // 兼容xhr对象 function createxhr(){ if(typeof xmlhttprequest != "undefined"){ // 非ie6浏览器 return new xmlhttprequest(); }else if(typeof activexobject != "undefined"){ // ie6浏览器 var version = [ "msxml2.xmlhttp.6.0", "msxml2.xmlhttp.3.0", "msxml2.xmlhttp", ]; for(var i = 0; i < version.length; i++){ try{ return new activexobject(version[i]); }catch(e){ //跳过 } } }else{ throw new error("您的系统或浏览器不支持xhr对象!"); } } // 转义字符 function params(data){ var arr = []; for(var i in data){ arr.push(encodeuricomponent(i) + "=" + encodeuricomponent(data[i])); } return arr.join("&"); } // 封装ajax function ga_ajax(obj){ var xhr = createxhr(); obj.url = obj.url + "?rand=" + math.random(); // 清除缓存 obj.data = params(obj.data); // 转义字符串 if(obj.method === "get"){ // 判断使用的是否是get方式发送 obj.url += obj.url.indexof("?") == "-1" ? "?" + obj.data : "&" + obj.data; } // 异步 if(obj.async === true){ // 异步的时候需要触发onreadystatechange事件 xhr.onreadystatechange = function(){ // 执行完成 if(xhr.readystate == 4){ callback(); } } } xhr.open(obj.method,obj.url,obj.async); // false是同步 true是异步 // "demo.php?rand="+math.random()+"&name=ga&ga", if(obj.method === "post"){ xhr.setrequestheader("content-type","application/x-www-form-urlencoded"); xhr.send(obj.data); }else{ xhr.send(null); } // xhr.abort(); // 取消异步请求 // 同步 if(obj.async === false){ callback(); } // 返回数据 function callback(){ // 判断是否返回正确 if(xhr.status == 200){ obj.success(xhr.responsetext); }else{ obj.error("获取数据失败,错误代号为:"+xhr.status+"错误信息为:"+xhr.statustext); } } } var html = document.getelementsbytagname("html")[0]; html.onclick = function(){ ga_ajax({ "method" : "post", "url" : "demo.php", "data" : { "name" : "gao", "age" : 100, "num" : "12346&598" }, "success" : function(data){ alert(data); }, "error" : function(text){ alert(text); }, "async" : false }); }
以上这篇使用原生js写ajax实例(推荐)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。
上一篇: C#基础语法:可空类型详解