美文网首页
Java web 学习—ajax

Java web 学习—ajax

作者: 当时年少_青衣 | 来源:发表于2017-07-23 21:48 被阅读0次

    相比传统web应用模式,ajax通过对ajax引擎的一次JavaScript调用来实现用户的行为。

    ajax是XMLHttpRequest(一个具有应用程序接口的JavaScript对象)对象和javascript,XML,Css,dom等多种技术的组合。

    在使用XMLHttpRequest对象发送请求和处理响应之前,要先初始化该对象。因为不是w3c标准,所以在初始化对象时要考虑是IE浏览器还是其他浏览器。

    1.非IE浏览器:var http_request=new XMLHttpRequest();

    2.IE浏览器:var http_request=new ActiveXObject("Msxml2.XMLHTTP");

    或者 var http_request=new XMLHttpRequest();

    为了提高兼容性

    if(window.XMLHttpRequest){            //非IE浏览器

        http-request=new XMLHttpRequest();

    }else if(window.ActiveXObject){         IE浏览器

    try{

        http_request=new ActiveXObject("Msxml2.XMLHTTP");

    }catch(e){

        try{

        http_request=new ActiveXObject("Microsoft.XMLHTTP");

    }catch(e){}

    }

    }


    xmlhttprequest对象的常用方法

    1.open():设置参数信息

    open("method请求类型(get/post),"url请求地址" ,[请求方式:同步true/异步false] ,[用户名][密码]");

    2.send():向服务器发送请求

    send(数据):必须在send方法之后才能调用

    3.setRequestHeadere("header:http头","value:头设置值")

    4.abort():用于请求或者放弃当前异步请求

    5.getallresponseheader():以字符串型形式返回完整的http头消息


    常用属性

    1.onreadystatechange:指定状态改变时触发的事件处理器

    http_rquest.onreadystatechange=function(){

        getResult("参数");

    }

    2.readyState:获取请求的状态    4:完成

    3.responsetext:获取服务器响应,表示为字符串

    4.responseXML获取服务器响应,表示为xml

    5.status返回服务器http状态码   200:成功   202:请求接受未成功  400:错误的请求  404:文件未找到     500: 内部服务器错误

    6.status:返回httpp状态码对应的文本


    与服务器通信

    发送请求(get/post)

    1.初始化XMLHttpRequest对象

    if(window.XMLHttpRequest){            //非IE浏览器

    http-request=new XMLHttpRequest();

    }else if(window.ActiveXObject){         IE浏览器

    try{

    http_request=new ActiveXObject("Msxml2.XMLHTTP");

    }catch(e){

    try{

    http_request=new ActiveXObject("Microsoft.XMLHTTP");

    }catch(e){}

    }

    }

    if(!http_request){

        alert("创建失败");

        return false;

    }

    2.为对象返回指定一个返回结果处理函数(回调函数)

    http_request.onreadystatechange=function(){

        getResult(参数);

    }

    3.创建与服务器的连接

    http_request.open('post/get',url,true/false);

    在指定URL参数时在参数后加一个时间戳,用来防止因浏览器缓存结果而不能实现得到最新结果

    String url="deal.jsp?nocache="+new Date().getTime();

    4.向服务器 发送请求:

    get请求:http_request.send(null);

    post请求:(在发送post请求前需要设置正确的请求头:http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");且添加在请求前)

    http_request.send(参数);

    处理服务器响应

    1.处理字符串响应(响应简单情况)

    function getresult(){

        if(http_request.readyState==4){

             if(http_request.status==200){

                     alert(htp_request.responseText);

    }else{

             alert("请求错误");

    }

    }

    }

    当需要将响应结果响应到页面的指定位置时,则添加一个<div>或<span>标记,设置id属性然后在回调函数中应用代码

    document.getElementByld("id").innerHTML=http_request.responseText;

    2.处理xml响应


    Ajax重构

    var net=new Object();

    net.js1=function(url,onload,onerror,method,params){        //构造函数

    this.req=null;

    this.onload=onload;

    this.onerror=(onerror) ? onerror:this.defaultError;

    this.loadDate(url,method,params);

    }

    net.js1.prototype.loadDate=function(url,method,params){            //初始化对象指定处理函数,发送请求方法

    if(!method){

    method="GET";

    }

    if(window.XMLHttpRequest){

    this.req=new XMLHttpRequest();

    }else if(window.ActiveXObject){

    this.req=new ActiveXobject("Microsoft.XMLHTTP");

    }

    if(this.req){

    try{

    var loader=this;

    this.req.onreadystatechange=function(){

    net.AjaxRequest.onReadyState.call(loader);

    }

    this.req.open(method,url,true);

    if(method=="POST"){

    this.req.setRequestHeader("Content-Type","application/x-www-form-urlencoded");

    }

    this.req.send(params);

    }catch(err){

    this.onerror.call(this);

    }

    }

    }

    net.js1.onReadyState=function(){           //回调函数

    var req=this.req;

    var ready=req.readyState;

    if(ready==4){

    if(req.status==200){

    this.onload.call(this);

    }else{

    this.onerror.call(this);

    }

    }

    }

    net.js1.prototype.defaultError=function(){         //默认错误处理函数

    alert("错误数据\n\n回调状态:"+this.req.readyState+"\n状态:"+this.req.ststus);

    }


    相关文章

      网友评论

          本文标题:Java web 学习—ajax

          本文链接:https://www.haomeiwen.com/subject/ugbmkxtx.html