ajax个人学习笔记
1. function createXHR(){
if(typeof XMLHttpRequest != 'undefined'){
return new XMLHttpRequest();
}else if(typeof ActiveXObject != 'undefined'){
var version = ['MSXML2.XMLHttp.6.0',
'MSXML2.XMLHttp.3.0',
'MSXML2.XMLHttp'
];
for(var i=0;i<version.length;i++){
try{
return ActiveXObject(version[i]);
}catch(e){
}
}
}else{
throw new Error('你的系统或浏览器不支持XHR');
}
}
2.IE浏览器第一次向服务器端请求,获取最新数据,其后默认获取的是缓存数据,而不是最新的数据,可以使用js中的随机字符串处理。
3.ajax异步(true)过程中需要readyState=4值的判定
4.xhr.getAllResponseHeaders();xhr.getResponseHeader();xhr.setRequestHeader();xhr.setRequestHeader('Content-Type','application/x-www-form-urlencode');模拟表单提交.
5.ajax自定义封装:
function ajax(obj){
var xhr = createXHR();
obj.url = obj.url + '?rand=' + Math.random();
obj.data = params(obj.data);
if(obj.method === 'get')
obj.url += obj.url.indexOf("?") == -1? '?'+obj.data:'&'+obj.data;
if(obj.async === true){
xhr.onreadystatechange = function(){
if(xhr.readyState ==4 ){
callback();
}
};
}else{
callback();
}
xhr.open(obj.method,obj.url,obj.async);
if(obj.method === 'post'){
xhr.setRequestHeader('Content-Type','application/x-www-form-urlencode');
xhr.send(obj.data);
}else{
xhr.send(null);
}
function params(data){
var arr = [];
for(var i in data){
arr.push(encodeURLComponent(i) + '=' + encodeURIComponent(data[i]));
}
return arr.join('&');
}
function callback(){
if(xhr.status == 200){
obj.success(xhr.responseText);
}else{
alert('获取数据错误!错误代码:'+ xhr.status + ',错误信息:'+ xhr.statusText);
}
}
}
最新文章
- ajax pagination 布局刷新
- JSP内置对象---request对象(用户登录页面(setAttribute))
- JavaScript字符转Unicode,顺便说句:GitHub的Oh no页面很亮
- meta之renderer
- maven 的一些基本操作
- Linux下搭建Android NDK , Linux 驱动开发环境
- 一个少了context的赋值的错误
- es5 中类的2种基本实现方法
- cc2530 T3定时器控制引脚P1_1的亮灭
- Android破解学习之路(五)——Android游戏 割绳子:魔法 + 在游戏加入Toast弹窗提示
- Hive优化案例
- Http协议处理器——Http11Processor
- Day14 Javascript 点击添加出弹窗,取消隐藏弹窗小练习 反选,全选,取消边框
- Spring security oauth2 client_credentials认证 最简单示例代码
- SQL-61 对于employees表中,给出奇数行的first_name
- java 线程 (二) 线程池
- 在ASP.NET MVC中实现登录后回到原先的界面
- 170530、java 迭代hashmap常用的三种方法
- Unbuntu安装RVM
- Spring+Spring MVC+MyBatis整合
热门文章
- (十)stm32 GPIO口复用,重映射 RCC_APB2Periph_AFIO
- jQuery中的each关键词
- mysql的grant权限参数汇总
- PSR-2 编码风格规范
- Spring Cloud之分布式配置中心
- 线段树【p2801】教主的魔法
- 洛谷——P1614 爱与愁的心痛
- POJ 1044: Date bugs
- VS2010免费插件
- 【spring boot】集成了druid后,同样的mybatis模糊查询语句出错Caused by: com.alibaba.druid.sql.parser.ParserException: syntax error, error in :&#39;name LIKE &#39;%&#39; ? &#39;%&#39;