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