hey,guys!今天我们一起讨论下ajax吧!此文只适合有一定ajax基础,但还是模糊状态的同志,当然高手也可以略过~~~

一、概念

Ajax(Asynchronous Javascript + XML(异步JavaScript和XML ))

二、效果

实现无刷新效果,向后台异步的取数据(不是只有AJAX才能实现这样的效果的哦,如img , script标签中的src属性也可以实现一样的效果,可以自己尝试一下哦)

三、本质

可能我们在学习过程中会觉得ajax好难,我也是这样过来的,我觉得是我们把重心放错了。

因为ajax用起来是很方便的(只是写一下请求地址,请求方式,是否异步),我们之所以觉得难,很大一部分原因是因为我们不清楚ajax内部的工作原理。我们应该把重心放在取数据后怎样去用这些数据。

OK,那ajax的本质是什么呢??

ajax的目的还是去后台的某个路径取数据,取文件,就像是img/srcipt标签一样,走的还是http协议

所以,如果你想了解ajax的工作原理,最好是看一下http协议,因为ajax里面所设置的参数,都是为了遵循http协议才这样写的。

也不多说了,直接介绍一个我看过比较靠谱,说得很不错的视频教程,大家可以去下载学习哦(不是打广告~~真心说得好~~嘻嘻)http://pan.baidu.com/s/1vg4hi

四、总结

还是那句,ajax使用并不难,理解过后封一个ajax函数直接取数据就行,  难的是你取到数据后怎样去利用这些数据去进一步的开发。

ajax运用例子: 留言本,瀑布流等等,这些取数据的方式是一样的,但对数据进行处理才是重点。

ajax就像是你用script标签去引入JQ一样,这个是很简单的,但引入来之后你怎么用才是重点。

OK,下面分享下我自己封装的ajajx函数(有详细注释的哦~~),用法和JQ的ajax相似,当然没JQ的那么完善,但基本够用了。

  1. /*
  2. *author: Ivan
  3. *date: 2014.06.01
  4. *参数说明:
  5. *opts: {'可选参数'}
  6. **method: 请求方式:GET/POST,默认值:'GET';
  7. **url: 发送请求的地址, 默认值: 当前页地址;
  8. **data: string,json;
  9. **async: 是否异步:true/false,默认值:true;
  10. **cache: 是否缓存:true/false,默认值:true;
  11. **contentType: HTTP头信息,默认值:'application/x-www-form-urlencoded';
  12. **success: 请求成功后的回调函数;
  13. **error: 请求失败后的回调函数;
  14. */
  15. function ajax(opts){
  16. //一.设置默认参数
  17. var defaults = {
  18. method: 'GET',
  19. url: '',
  20. data: '',
  21. async: true,
  22. cache: true,
  23. contentType: 'application/x-www-form-urlencoded',
  24. success: function (){},
  25. error: function (){}
  26. };
  27.  
  28. //二.用户参数覆盖默认参数
  29. for(var key in opts){
  30. defaults[key] = opts[key];
  31. }
  32.  
  33. //三.对数据进行处理
  34. if(typeof defaults.data === 'object'){ //处理 data
  35. var str = '';
  36. var value = '';
  37. for(var key in defaults.data){
  38. value = defaults.data[key];
  39. if( defaults.data[key].indexOf('&') !== -1 ) value = defaults.data[key].replace(/&/g, escape('&')); //对参数中有&进行兼容处理
  40. if( key.indexOf('&') !== -1 ) key = key.replace(/&/g, escape('&')); //对参数中有&进行兼容处理
  41. str += key + '=' + value + '&';
  42. }
  43. defaults.data = str.substring(0, str.length - 1);
  44. }
  45.  
  46. defaults.method = defaults.method.toUpperCase(); //处理 method
  47.  
  48. defaults.cache = defaults.cache ? '' : '&' + new Date().getTime() ;//处理 cache
  49.  
  50. if(defaults.method === 'GET' && (defaults.data || defaults.cache)) defaults.url += '?' + defaults.data + defaults.cache; //处理 url
  51.  
  52. //四.开始编写ajax
  53. //1.创建ajax对象
  54. var oXhr = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
  55. //2.和服务器建立联系,告诉服务器你要取什么文件
  56. oXhr.open(defaults.method, defaults.url, defaults.async);
  57. //3.发送请求
  58. if(defaults.method === 'GET')
  59. oXhr.send(null);
  60. else{
  61. oXhr.setRequestHeader("Content-type", defaults.contentType);
  62. oXhr.send(defaults.data);
  63. }
  64. //4.等待服务器回应
  65. oXhr.onreadystatechange = function (){
  66. if(oXhr.readyState === 4){
  67. if(oXhr.status === 200)
  68. defaults.success.call(oXhr, oXhr.responseText);
  69. else{
  70. defaults.error();
  71. }
  72. }
  73. };
  74. }

调用方式:

  1. ajax({
  2.  
  3.   url: '1.php',
  4.  
  5.   data: {name: 'ivan', sex: 'male', age: '23'},
  6.  
  7.   success: function (data){ alert('返回数据是:' + data); }
  8.  
  9. });
  10.  
  11. ajax({
  12.  
  13.   url: '1.php',
  14.  
  15.   data: 'name=ivan&sex=male&age=23',
  16.  
  17.   cache: false,
  18.  
  19.   success: function (data){ alert('返回数据是:' + data); }
  20.  
  21. });

如有bug,请望指正; 水平有限,欢迎拍砖~~

轻松搞定Ajax(分享下自己封装ajax函数,其实Ajax使用很简单,难是难在你得到数据后来怎样去使用这些数据)的更多相关文章

  1. 春节过后就是金三银四求职季,分享几个Java面试妙招,轻松搞定HR!

    春节过后就是金三银四,分享几个Java面试妙招,轻松搞定HR! 2020年了,先祝大家新年快乐! 今年IT职位依然相当热门,特别是Java开发岗位.软件开发人才在今年将有大量的就业机会.春节过后,金三 ...

  2. centos下yum安装lamp和lnmp轻松搞定

    centos下yum安装lamp和lnmp轻松搞定.究竟多轻松你看就知道了.妈妈再也不操心不会装lamp了. 非常辛苦整理的安装方法,会持续更新下去.凡无法安装的在评论里贴出问题来,会尽快解决.共同维 ...

  3. 【微服务】之四:轻松搞定SpringCloud微服务-负载均衡Ribbon

    对于任何一个高可用高负载的系统来说,负载均衡是一个必不可少的名称.在大型分布式计算体系中,某个服务在单例的情况下,很难应对各种突发情况.因此,负载均衡是为了让系统在性能出现瓶颈或者其中一些出现状态下可 ...

  4. PDF怎么旋转页面,只需几步轻松搞定!

    有时候我们下载一个PDF文件里面有页面是旋转的情况,用手机看的时候可以把手机旋转过来看,那么用电脑的时候总不可能也转过来看吧,笔记本是可以的台式的是不行的,这个时候我们就需要把PDF文件中旋转的页面转 ...

  5. 几行c#代码,轻松搞定一个女大学生

    几行c#代码,轻松搞定一个女大学生 的作业... 哈哈,标题党了哈,但是是真的,在外面敲代码,想赚点外快,接到了一个学生的期末考试,是一个天气预报的程序.程序并不难. 看到这个需求第一个想法就是只要找 ...

  6. 盘它!基于CANN的辅助驾驶AI实战案例,轻松搞定车辆检测和车距计算!

    摘要:基于昇腾AI异构计算架构CANN(Compute Architecture for Neural Networks)的简易版辅助驾驶AI应用,具备车辆检测.车距计算等基本功能,作为辅助驾驶入门级 ...

  7. 【转】轻松搞定FTP之FlashFxp全攻略

    转载网址:http://www.newhua.com/2008/0603/39163.shtml 轻松搞定FTP之FlashFxp全攻略 导读: FlashFXP是一款功能强大的FXP/FTP软件,融 ...

  8. 轻松搞定javascript变量(闭包,预解析机制,变量在内存的分配 )

    变量:  存储数据的容器     1.声明        var   2.作用域       全局变量. 局部变量. 闭包(相对的全局变量):   3.类型         a.基本类型(undefi ...

  9. 【微服务】之二:从零开始,轻松搞定SpringCloud微服务系列--注册中心(一)

    微服务体系,有效解决项目庞大.互相依赖的问题.目前SpringCloud体系有强大的一整套针对微服务的解决方案.本文中,重点对微服务体系中的服务发现注册中心进行详细说明.本篇中的注册中心,采用Netf ...

随机推荐

  1. Linux安装系统注意事项及系统初始化

      Linux安装系统注意事项 1.分区 学习用途: /boot:200M /swap :内存的1到2倍 /:根据需要分配大小,比如虚拟机下总空间是15G,那么可以分配8——10G跟/分区,如果是生产 ...

  2. 当nginx 500 伪静态错误时,记录解决方法rewrite or internal redirection cycle while processing

    错误日志::rewrite or internal redirection cycle while processing "/index.php/index.php/index.php/in ...

  3. 网关协议学习:CGI、FastCGI、WSGI、uWSGI

    一直对这四者的概念和区别很模糊,现在就特意梳理一下它们的关系与区别. CGI CGI即通用网关接口(Common Gateway Interface),是外部应用程序(CGI程序)与Web服务器之间的 ...

  4. PHP结合Linux的cron命令实现定时任务

    PHP死循环 来处理定时任务的效率是很低的.(众多网友评价)大家都建议使用Linux内置的定时任务crontab命令来调用php脚本来实现. PHP定时任务的两种方法:1.web方式调用php网页,但 ...

  5. python操作redis-为元素排序

    #!/usr/bin/python #!coding:utf-8 import time import redis if __name__ == "__main__": try: ...

  6. C语言简单strcat和strcmp的实现

    对于C标准库中的字符串处理函数应该平常用的比较多:简单实现strcat和strcmp _strcpy: char *_strcpy(char *dest, char *src) { char *buf ...

  7. 在 ASP.NET MVC 项目中使用 WebForm、 HTML

    原文地址:http://www.cnblogs.com/snowdream/archive/2009/04/17/winforms-in-mvc.html ASP.NET MVC和WebForm各有各 ...

  8. 汉子英文同行 连续英文不折行断行 的问题 兼容FIREFOX浏览器CSS

    #intro {white-space: normal;word-break: break-all;overflow: hidden;} --------------------- 案例2

  9. HDU3994(Folyd + 期望概率)

    Mission Impossible Time Limit: 30000/10000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Oth ...

  10. ZOJ 1136 Multiple (BFS)

    Multiple Time Limit: 10 Seconds      Memory Limit: 32768 KB a program that, given a natural number N ...