个人总结的一点ajax

什么是ajax?

ajax的全称就是“Asynchronous JavaScript and XML”(异步JavaScript和XML)。是一种创建交互式网页应用的网页开发技术。(就是在不刷新整个网页的情况下更新部分数据)。

ajax原理

通过XMLHttpRequest对象向服务器发送异步请求,然后从服务器获取数据,并用JavaScript操作DOM,来更新页面。
那么好了,XMLHttpRequest又是什么呢,它是ajax的核心机制,最好是从IE5就是开始引用了,是异步请求的技术。
(说到这里大家是不是想起了IE6,一个神奇的浏览器)。

XMLHttpRequest 对象
所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。
XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

其实简单点说就是JavaScript可以先服务器发送请求和处理响应了,还不阻塞用户的其他操作,并且还能达到无刷新页面更新数据。

ajax的步骤?

1、创建XMLHttpRequest对象(创建一个异步调用的对象)。

2、建立连接

3、发送请求

4设置函数监控状态,接收数据

下面给大家来一段ajax的封装:

  function ajax(json){
      json=json||{};
      json.data=json.data||{};
      json.type=json.type||'get';
      json.timeout=json.timeout||0;

  //1.创建对象
  try{
     var oAjax=new XMLHttpRequest();
  }catch(e){
     var oAjax=new ActiveXObject('Miscrosoft.XMLHTTP');
  }

  //2.字符串拼起来
  var arr=[];
  for(var name in json.data){
     arr.push(name+'='+json.data[name]);   //?
  }
  var sData=arr.join('&');

  if(json.type=='post'){
    //3.连接
    oAjax.open('POST', json.url, true);

    oAjax.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
    //4.发送
    oAjax.send(sData);
  }else{
    oAjax.open('GET', json.url+'?'+sData, true);
    oAjax.send();
  }
  //5.接收
  oAjax.onreadystatechange=function (){
    if(oAjax.readyState==4){
      clearTimeout(timer);
      if(oAjax.status>=200&&oAjax.status<300 || oAjax.status==304){
        json.success&&json.success(oAjax.responseText);
      }else{
        json.error&&json.error(oAjax.status);
      }
    }
  };

  if(json.timeout){
    var timer=setTimeout(function (){
      oAjax.abort();
    }, json.timeout);
  }
}

接下来我们说一说readySdate状态码了。
0、初始化,注:没有调用open方法;
1、正在加载。注:open方法被调用,send方法还没有;
2、已加载完毕。注:send被调用,请求已经开始;
3、交互中。注:服务器正在发送响应;
4、完毕。注:响应发送完毕

GET与POST的区别**

get---32K 不安全 易于分享数据 通过URL传输
post---1G 相对安全 不易于分享 不通过URL传输

ajax中用到的HTTP状态码

1、200 正常 (OK)
2、304 没有被修改(not modified)
3、404 没有找到页面(not found)
4、403 禁止访问(forbidden)
5、500 内部服务器出错(internal service error)

还有要注意的就是json解析了

因为我们都知道我们获取回来的数据都是字符串形式,所以我们要把字符串形式的json转换成真正的json,下面说两种方法:
1:eval
2:JSON.parse(str)
注:需要json的标准格式:
1.名字必须有引号
2.只能用双引号,不能用单引号
{a: 12, b: 5} => {"a": 12, "b": 5}
{'a': 12, b: 'abc'} => {"a": 12, "b": "abc"}

其他还有很多要注意的地方,以后想起来在补充吧。
以上只是个人总结,如有错误,希望指出,一定认真改进。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,743评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,296评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,285评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,485评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,581评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,821评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,960评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,719评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,186评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,516评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,650评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,329评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,936评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,757评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,991评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,370评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,527评论 2 349

推荐阅读更多精彩内容

  • AJAX 原生js操作ajax 1.创建XMLHttpRequest对象 var xhr = new XMLHtt...
    碧玉含香阅读 3,182评论 0 7
  • 本文详细介绍了 XMLHttpRequest 相关知识,涉及内容: AJAX、XMLHTTP、XMLHttpReq...
    semlinker阅读 13,634评论 2 18
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,633评论 18 139
  • 五十三:请解释 JavaScript 中 this 是如何工作的。1.方法调用模式当一个函数被保存为一个对象的属性...
    Arno_z阅读 573评论 0 2
  • 大家好,我是IT修真院深圳分院第3期的学员,一枚正直纯洁善良的前端程序员,今天给大家分享一下,修真院官网前端工程师...
    大大头大阅读 7,598评论 1 72