个人总结的一点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"}

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

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