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);

}

}

}

最新文章

  1. ajax pagination 布局刷新
  2. JSP内置对象---request对象(用户登录页面(setAttribute))
  3. JavaScript字符转Unicode,顺便说句:GitHub的Oh no页面很亮
  4. meta之renderer
  5. maven 的一些基本操作
  6. Linux下搭建Android NDK , Linux 驱动开发环境
  7. 一个少了context的赋值的错误
  8. es5 中类的2种基本实现方法
  9. cc2530 T3定时器控制引脚P1_1的亮灭
  10. Android破解学习之路(五)——Android游戏 割绳子:魔法 + 在游戏加入Toast弹窗提示
  11. Hive优化案例
  12. Http协议处理器——Http11Processor
  13. Day14 Javascript 点击添加出弹窗,取消隐藏弹窗小练习 反选,全选,取消边框
  14. Spring security oauth2 client_credentials认证 最简单示例代码
  15. SQL-61 对于employees表中,给出奇数行的first_name
  16. java 线程 (二) 线程池
  17. 在ASP.NET MVC中实现登录后回到原先的界面
  18. 170530、java 迭代hashmap常用的三种方法
  19. Unbuntu安装RVM
  20. Spring+Spring MVC+MyBatis整合

热门文章

  1. (十)stm32 GPIO口复用,重映射 RCC_APB2Periph_AFIO
  2. jQuery中的each关键词
  3. mysql的grant权限参数汇总
  4. PSR-2 编码风格规范
  5. Spring Cloud之分布式配置中心
  6. 线段树【p2801】教主的魔法
  7. 洛谷——P1614 爱与愁的心痛
  8. POJ 1044: Date bugs
  9. VS2010免费插件
  10. 【spring boot】集成了druid后,同样的mybatis模糊查询语句出错Caused by: com.alibaba.druid.sql.parser.ParserException: syntax error, error in :&#39;name LIKE &#39;%&#39; ? &#39;%&#39;