原生ajax
2016-03-06 00:18
239 查看
function ajax(url, fnSucc, fnFaild) { //1.创建 if(window.XMLHttpRequest) { var oAjax=new XMLHttpRequest(); } else { var oAjax=new ActiveXObject('Microsoft.XMLHTTP'); } //2.连接 oAjax.open('GET', url, true); //3.发送 oAjax.send(); //4.接收 oAjax.onreadystatechange=function () { if(oAjax.readyState==4) //完成 { if(oAjax.status>=200 && oAjax.status<300 || oAjax.status==304) { //alert('成功:'+oAjax.responseText); if(fnSucc) { fnSucc(oAjax.responseText); } } else { //alert('失败:'+oAjax.status); if(fnFaild) { fnFaild(oAjax.status); } } } }; }
辅助函数处理url
function json2url(json){ json.t=Math.random(); var arr=[]; for(var i in json) { arr.push(i+'='+json[i]); } return arr.join('&'); }
实例1:读取文字
window.onload=function () { var oBtn=document.getElementById('btn1'); oBtn.onclick=function () { //alert('aaa.txt?t='+Math.random()); ajax('aaa.txt?t='+Math.random(), function (str){ //str——从服务器读回来的内容 alert(str); }); }; };
实例2:注册和登陆
window.onload=function(){ var oAddUser=document.getElementById('add_user'); var oAddPass=document.getElementById('add_pass'); var oAddBtn=document.getElementById('add_btn'); oAddBtn.onclick=function() { var url='user.php?'+json2url({ act:'add', user:oAddUser.value, pass:oAddPass.value }) ajax(url,function(str){ var json=eval('('+str+')'); if(json.error){ alert('有问题'+json.desc); }else{ alert('注册成功'); } },function(){ alert('失败'); }); }; var oLgnUser=document.getElementById('login_user'); var oLgnPass=document.getElementById('login_pass'); var oLgnBtn=document.getElementById('login_btn'); oLgnBtn.onclick=function(){ var url='user.php?'+json2url({ act:'login', user:oLgnUser.value, pass:oLgnPass.value }) ajax(url,function(str){ var json=eval('('+str+')'); if(json.error){ alert('有问题'+json.desc); }else{ alert('登陆成功'); } },function(){ alert('失败'); }) }; };
相关文章推荐
- 封装toDuble (获取时间对象时的补零处理)
- UIView和CALayer有什么关系
- Nyoj 990 蚂蚁感冒(思维)
- 统计java代码文件的代码行数(空行、注释不能计数)
- 每天一个linux命令(51):lsof命令
- html的textarea用作“使用说明框”真的非常适合
- android平台手电筒开发源代码
- Map.putAll() 使用方法 简单易懂
- try里面抛异常
- 你真的了解AsyncTask?
- Android Studio——Android获取屏幕宽度的4种方法
- 每天一个linux命令(52):ifconfig命令
- vb.net中xml操作实例
- 设计模式——工厂模式
- 什么是method swizzling
- 每天一个linux命令(53):route命令
- 第25章 SEH结构化异常处理_未处理异常及向量化异常
- 2. Elasticsearch权威指南中文版 by QQ1350995917
- Sense2Vec
- 每天一个linux命令(54):ping命令