传统Ajax编程的步骤(不用框架实现代码)

转自:http://mantocom.blog.sohu.com/155564198.html



 由于传统web应用时每次总是全部页面加载的缺点(用传统的js可以部分的加载),使得2005年后ajax(异步传输技术)技术大行其道,在程序上除了减少与服务器交互的数据量,但对用户的体验方面是大大的舒服了.虽然在程序设计时,对与程序员的代码工作量增加了,但对于客户的使用方面却得到了很大的提升.下面说一下,用js而非什么其他的ajax框架的步骤与实现代码: 主要是1-5这五个步骤是重点.

0.写客户端的提交页面:一般用表单(按钮)或链接来写开始页面.   

1. 创建XMLHttpRequest对象:这一步写起来虽然麻烦,但都是千篇一律,所以直接复制粘贴就是,里面代码中注意浏览器的兼容问题的考虑.

    var XHR=null;

    var XHRcreate=function()

    {

      if (window.XMLHttpRequest) {
        //针对FireFox,Mozillar,Opera,Safari,IE7,IE8
        XHR = new XMLHttpRequest();
        //针对某些特定版本的mozillar浏览器的BUG进行修正
        if (XHR.overrideMimeType) {
            XHR.overrideMimeType("text/xml");
        }
    } else if (window.ActiveXObject) {
         //针对IE6,IE5.5,IE5
        var activexName = ["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
        for (var i = 0; i < activexName.length; i++) {
            try{
                //如果创建失败,回抛出异常,然后可以继续循环,继续尝试创建
                XHR = new ActiveXObject(activexName[i]);
                break;
            } catch(e){
            }
        }
    }

    }

    XHRcreate();
2.注册回调函数: 注意回调函数后面不要接()就是,否则返回的是callback()的返回值.
 XHR.onreadystatechange = callback;
3.设置连接信息:这里分两种情况:一是get方式发送;二是以post方式发送,就要麻烦一些,要设置请求头

(1)get方式:
  XHR.open("GET","login_verify.jsp?name="+ userName,true);
(2)post方式:
  XHR.open("POST","AJAXXMLServer",true);
  XHR.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); 
4.发送数据:

(1)get方式:
    XHR.send(null);

(2)post方式:
   XHR.send("name=" + userName);

5.接收响应数据:(在回调函数里面):这是最复杂的地方,响应的方式有两种:一种是text方式,一种是xml方式,因为xml方式处理比较麻烦,而且实际中也比较少.这里就只说text方式:

function callback() {

    //判断对象的状态是交互完成
    if (XHR.readyState == 4) {
        //判断http的交互是否成功
        if (XHR.status == 200) {
            var responseText = XHR.responseText;
            //通过dom的方式找到div标签所对应的元素节点(为了简便,这里客户端的程序未写了)
            var divNode = document.getElementById("result");
            divNode.innerHTML = responseText;
        } else {
            alert("出错了!!!");
        }
    }

 6.写服务器端的响应:用jsp或servlet都可以,一般是用out.println("返回给客户的的内容");的语句来返回给客户内容.

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值