妹味6:ajax与ajax封装
//用一个不存在的属性:undefined
//1.创建ajax对象
var oAjax=null;
if(window.XMLHttpRequest){ // 对ie6来说,window.XMLHttpRequest 是一个undefined属性,为假;其它浏览器是存在的,为真。若此处为 XMLHttpRequest ,则ie6中无法通过,报错。
oAjax=new XMLHttpRequest(); // ie6不认
}else{
oAjax=new ActiveXObject("Microsoft.XMLHTTP"); //ie6专属
}
//2.连接服务器
oAjax.open('GET', url, true); //open(方法, url, 是否异步)
//3.发送请求
oAjax.send();
//4.接收返回
//OnReadyStateChange
oAjax.onreadystatechange=function (){
if(oAjax.readyState==4){ //请求状态已完成:0未初始化、1发送请求、2收到全部响应内容、3对加密内容解析、4内容解析完成可以使用了
if(oAjax.status==200){ //请求结果:已经成功获取指定url的内容。
fnSucc(oAjax.responseText); //设置解析完的结果为传入的成功函数的参数,使用后续函数操作
}else{
if(fnFaild){ //如果获取内容失败且存在失败时处理函数,则执行
fnFaild();
}
}
}
};
}
onreadystatechange事件
readyState属性:请求状态
0(未初始化)还没有调用open()方法
1(载入)已调用send()方法,正在发送请求
2(载入完成)send()方法完成,已收到全部响应内容
3(解析)正在解析响应内容
4(完成)响应内容解析完成,可以在客户端调用了
status属性:请求结果(200:成功; 404、300+、500+:都是有错误,如未找到文件)
responseText:请求得到的内容
var oBtn=document.getElementById('btn1');
oBtn.onclick=function(){
ajax('abc.txt?t='+new Date().getTime(),function(str){
alert(str);
});
};
}
var aBtn=document.getElementsByTagName('input');
var oDiv=document.getElementById('div1');
var i=0;
for(i=0;i<aBtn.length;i++){
aBtn[i].index=i;
aBtn[i].onclick=function (){
ajax(this.index+1+'.txt?t='+new Date().getTime(), function (str){ //function(str){}成功后执行的匿名函数。
});
};
}
};
var oBtn=document.getElementById('btn1');
oBtn.onclick=function(){
ajax('data.txt?t='+new Date().getTime(),function(str){
//str->'[1,2,3,4]'
var arr=eval(str);
alert(arr[3]); //此时结果为4。若不进行eval()处理那么返回的结果是一个字符串,结果为2
});
};
}
var oBtn=document.getElementById('btn1');
oBtn.onclick=function(){
ajax('data.json?t='+new Date().getTime(),function(str){
//str-> [{a: 12, b: 5}, {a: 8, b: 9}]
var arr=eval(str);
alert(arr[0].b); //此时结果为5。eval()对数据分割成多维数组
});
};
}
var oUl=document.getElementById('ul1');
var aBtn=document.getElementsByTagName('a');
var i=0;
for(i=0;i<aBtn.length;i++){
aBtn[i].index=i;
aBtn[i].onclick=function(){
// 需要请求的三个文件名为:page1.txt page2.txt page3.txt
ajax('page'+(this.index+1)+'.txt?t='+new Datd().getTime(),function(str){
var aData=eval(str);
oUl.innerHTML='';
for(i=0;i<aData.length;i++){
var oLi=document.createElement('li');
//page1.txt中的数据为:[{user: 'blue', pass: '123'}, {user: 'aaa', pass: 'jjfhier'}, {user: 'leo', pass: '123456'}] (另两个类似)
oLi.innerHTML='<strong>'+aData[i].user+'</strong><i>'+aData[i].pass+'</i>'; //此处输出格式根据需要更改
oUl.appendChild(oLi);
}
};
}
}
<body>
<ul id="ul1">
</ul>
<a href="javascript:;">1</a>
<a href="javascript:;">2</a>
<a href="javascript:;">3</a>
</body>
妹味6:ajax与ajax封装的更多相关文章
- ajax的再次封装!(改进版) —— new与不 new 有啥区别?
生命不息重构不止! 上一篇写了一下我对ajax的再次封装的方法,收到了很多有价值的回复,比如有童鞋建议用$.extend,一开始还以为要做成插件呢,后来才知道,原来这个东东还可以实现合并.省着自己再去 ...
- ajax的再次封装!
js的动态加载.缓存.更新以及复用 系列有点卡文,放心会继续的.先来点更基础的,为js的加载做点铺垫. jQuery的ajax本来就很方便了,为啥还要在进一步的封装呢?这个首先要看项目的具体需求了,如 ...
- Ajax基础之封装3
今天接着我们上篇博文的栗子,现在我来扩大一下需求,之前是点击按钮取出新闻,现在要实现每隔一段事件进行新闻的更新.这个时候,肯定是加一个定时器,然后每隔一段事件,再进行一次Ajax请求,既然要经常用到A ...
- jQuery Ajax 二次封装
jQuery Ajax通用js封装 第一步:引入jQuery库 <script type="text/javascript" src="<%=path%> ...
- ajax二次封装之异步加载
ajax二次封装之异步加载 ajax异步加载会导致在数据未加载回来就读取数据,然后出现数据为空的报错.在ajax封装时,将ajax直接改为同步,虽然可以解决报错,但是会导致页面渲染被阻塞,接口反应时间 ...
- 微信小程序request(ajax)接口请求封装
微信小程序request(ajax)接口请求封装 最近在进行小程序的编写,需要调用后端接口,经常要用到wx.request方法,所以就自己封装了一下,简化一下代码,如果能给大家提供帮助更好,在封装的时 ...
- ajax原理及封装
一:AJAX 简介 AJAX 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术,通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新. AJAX = 异步 JavaScri ...
- ajax原生js封装
不带注释的 function ajax(json) { json.type = json.type ? json.type : 'get'; json.async = json.async == fa ...
- Ajax函数的封装
Ajax函数的封装 function ajax(options) { // 1 创建Ajax对象 let xhr = new XMLHttpRequest(); // 2 告诉Ajax对象要想哪儿发送 ...
- Ajax概述,封装以及联合模板引擎进行数据交互
欢迎大家去博客冰山一树Sankey,浏览效果更好.直接右上角搜索该标题即可 博客园主页:博客园主页-冰山一树Sankey CSDN主页:CSDN主页-冰山一树Sankey 更多资料可参考Ajax 介绍 ...
随机推荐
- emoji表情引发的JNI崩溃
今天突然接到客服那边的反馈说,有玩家反馈进游戏后不久就崩溃了,我先是怀疑网络问题,因为一连接聊天成功后就挂了.之后用logcat抓日志,发现挂在jni那里了 JNI DETECTED ERROR IN ...
- centos7防火墙那些事
转发设置 firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080 firewall-cmd --perma ...
- shell变量注意事项
概念:变量赋值,变量替换,变量引用,命令替换 variable=22 echo variable 可以在同一行设置多个变量.例如 va1=good va2=chif va3=beijing #需 ...
- ie8下jquery改变PNG的opacity出现黑边,ie6下png透明解决办法
目前互联网对于网页效果要求越来越高,不可避免的用到PNG图片,PNG分为几种格 式,PNG8 PNG24 PNG32,其中最常用的,也是显示效果和大小比较适中的则是PNG24,支持半透明,透明,颜色也 ...
- Qt 调试时的错误——Debug Assertion Failed!
在VS2008中写qt程序时调试出现此问题,但在release模式下就不存在,在网上搜罗了一圈,是指针的问题. 问题是这样的: 需要打开两个文件,文件中数据类型是float,我使用QVector进行保 ...
- 高级屏幕空间反射: Screen Space Reflection (SSR)
自从CE3首倡SSR以来,发展至今,其质量与当年早已不能同日而语.不仅强调超越性的质量,而且强调超越性的性能.乘着周末有空撸了撸,以下是增强型实时SSR结果图.与我原来的SSR原始实现相比,新的增强型 ...
- 【LeetCode】273. Integer to English Words
Integer to English Words Convert a non-negative integer to its english words representation. Given i ...
- web项目总结
web项目 Webroot下面的index.jsp页面的内容: <%@ page language="java" pageEncoding="UTF-8" ...
- LR6 碱性电池才能带动微软鼠标
LR6 碱性电池才能带动微软鼠标 好前一段买个一个微软无线鼠标后来动弹不得,更换电池也不行,本来lp说为什么不扔掉,但因为实在做得很漂亮一直带在身边.改用雷柏的普通无线鼠标后也很是好用.不过要经常 ...
- 基于jQuery的input输入框下拉提示层(自动邮箱后缀名)
基于jQuery的input输入框下拉提示层,方便用户输入邮箱时的提示信息,需要的朋友可以参考下 效果图 // JavaScript Document (function($){ $.fn ...