原生ajax的封装

来源:互联网 发布:linux的shell用法 编辑:程序博客网 时间:2024/05/18 00:22

请求步骤:

  1. 建立XMLHttpRequest连接
  2. 向后台服务器发送请求
  3. 根据服务器返回的状态码执行相关的操作
  4. 返回的数据格式化
function json2url(json) {    json.t = Math.random();    var arr = [];    for(var name in json) {        arr.push(name+'='+json[name]);    }    return arr.join('&');}function ajax(json) {    json = json || {};    if(!json.url) return;    json.data = json.data || {};    json.type = json.type || 'get';    if(window.XMLHttpRequest) {        var oAjax = new XMLHttpRequest();    }else{        var oAjax = new ActiveXObject('Microsoft.XMLHTTP');    }    switch(json.type) {        case 'get':            oAjax.open('GET',json.url+'?'+json2url(json.data),true);            oAjax.send();            break;        case 'post':            oAjax.open('POST',json.url,true);            oAjax.setRequestHeader('Content-Type','application/x-www-form-urlencoded');            oAjax.send(json2utl(json.data));            break;    }    oAjax.onreadystatechange = function() {        if(oAjax.readyState == 4){            if(oAjax.status >= 200 && oAjax.status < 300 || oAjax.status == 304) {                json.success && json.success(oAjax.responseText);            }else{                json.error && json.error(oAjax.status);            }        }       }}

ajax优点:

  1. 通过异步模式,提升了用户体验
  2. 优化了浏览器和服务器之间的传输,减少了不必要的数据往返,减少了宽带占用
  3. ajax运行在客户端,承担了部分服务器来自服务器的工作,从而减少了服务器压力

ajax局限性:

  1. 不支持浏览器的后退功能
  2. 对搜索引擎的支持比较弱
  3. ajax暴露了与服务器的交互细节
  4. 破坏了程序的异常机制
原创粉丝点击