ajax创建及参数、优缺点分析

Ajax

“Asynchronous JavaScript and XML”(异步JavaScript和XML),是一种创建交互式网页应用的网页开发技术。它使用:

  • 使用XHTML+CSS来标准化呈现;
  • 使用XML进行数据交换及相关操作;
  • 使用XMLHttpRequest对象与Web服务器进行异步数据通信;
  • 使用Javascript操作Document Object Model进行动态显示及交互;
  • 使用JavaScript绑定和处理所有数据。

1. 新建XMLHttpRequest对象

function createXHR(){
        if(typeof window.XMLhttpRequest != undefined){
            return new window.XMLHttpRequest();
        }else if(window.ActiveXOject != undefined){
        var xhr;
            var versions = ['MSXML2.XMLHttp.6.0','MSXML2.XMLHttp2.3.0','MSXML2.XMLHttp'];
            for(var i = 0; i<versions.length; i++){
                try{
                    new ActiveXObject(versions[i]);
                    break;
                }catch(e){}
            }
            return xhr;
        }else{
            throw new Error('no XHR object available');
        }
}

2. 监听readystate事件

xhr.onreadystatechange = function(){
    if(xhr.status == 200 && xhr.readystate == 4){
        func(xhr.responseText);
    }
}

3. 打开执行URL

xhr.open(method,url,async);

method参数

  • GET
  • POST,需设置请求头:xhr.setRequestHeader('Content-Type','application/x-www-form-urlencode'),再发送数据:xhr.send('framw=jd&name=zy'),
  • XMLHttpRequest2定义了FormData类型的参数,可直接发送数据而不用设置请求头:
var data = new FormData();
data.append('name','zy');
xhr.send(data);

aysnc参数

  • true:异步请求(默认)
  • false:同步请求

4. 发送请求

xhr.send(null);

xhr.readystate详解

0:请求未初始化,还未调用open
1:服务器已建立连接,已经调用open,还未send
2:请求已接收,已经send,未收到响应
3:请求处理中,收到部分响应
4:请求已完成,收到全部响应

参数分析

  • GET请求将参数跟在URL后面传递,POST则是作为HTTP消息的实体部分传递
  • 由于GET将请求附加在URL后面,而不同浏览器或者操作系统对URL参数有长度限制,因此传递的数据量较小,IE对URL的限制为2038即2K+35字节
  • GET请求的数据会被浏览器缓存,如账号密码,有安全问题
  • 在服务器端,GET请求使用Request.QueryString获取参数,POST用Request.Form获取参数
  • GET纯粹是为了请求资源,如搜索,而POST用于创建资源,例如写数据库等,

优势

每个请求都需从服务器下载整个HTML页面,即页面整体刷新,用户需要等待页面返回才能执行其他操作。

ajax是将用户的请求交给ajax引擎,由ajax引擎向服务器异步请求数据,即直接和服务器交互,减少了无状态连接的痛苦,避免下载冗余HTML,从而提升响应速度,可使页面局部刷新且不会打断用户的操作,减少用户的等待时间。

ajax引擎是一个复杂的JavaScript应用程序,处理用户请求及和服务器交互。

缺点

  • ajax下不能使用后退按钮。
  • 和服务器的交互细节都在浏览器端展示,安全性相对较低
  • 浏览器禁用JavaScript时将不能获取到数据
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值