AJAX和服务器交互实例

作者: 世外大帝 | 来源:发表于2017-04-27 15:39 被阅读81次

    这个是AJAX基础,虽然现在都直接用jQuery AJAX了,但是我还是劝你再看看这个,毕竟...我一开始找到这个了,都写出来了不看就可惜呀...

    XHR基础

    首先创建XMLHttpRequest对象

    
    //ajex的基础是XMLHttpRequest();所以需要先创建一个XMLHttpRequest对象
    var iable=new XMLHttpRequest();
    
    // IE5 IE6等老版本使用 ActiveX 对象
    var iable=new ActiveXObject("Microsoft.XMLHTTP");
    
    //为了应对所有的现代浏览器,包括 IE5 和 IE6,需要检查浏览器是否支持 XMLHttpRequest 对象。如果不支持,则创建 ActiveXObject :
    
    var xmlhttp;
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    

    请求

    /**
     * @Param GET or POST
     * @Param url
     * @param asyn(boolean)
     *
     * 它还有个构造方法是5个参数
     * 最后两个参数username和password
     */
    xmlhttp.open("GET","http://192.168.4.87:8080/login",true);
    xmlhttp.send();
    

    响应

    • responseText
    • responseXML
    //看名字就知道,下面是获取text
    xmlhttp.responseText;
    //需要显示的话直接显示出来就行了
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    
    //看名字就知道,下面是获取xml,然而XML需要解析
    xmlhttp.responseXML;
    
    //首先获取到返回的xml信息
    xmlDoc=xmlhttp.responseXML;
        txt="";
        //获取books.xml的title
        x=xmlDoc.getElementsByTagName("title");
        //遍历出xml所有的title信息
        for (i=0;i<x.length;i++)
          {
          txt=txt + x[i].childNodes[0].nodeValue + "<br />";
          }
          //现在就可以显示出来了
        document.getElementById("myDiv").innerHTML=txt;
        }
    
    
    <!--这是一个books.xml-->
    <bookstore>
    <book category="children">
    <title lang="en">Harry Potter</title>
    <author>J K. Rowling</author>
    <year>2005</year>
    <price>29.99</price>
    </book>
    <book category="cooking">
    <title lang="en">Everyday Italian</title>
    <author>Giada De Laurentiis</author>
    <year>2005</year>
    <price>30.00</price>
    </book>
    <book category="web" cover="paperback">
    <title lang="en">Learning XML</title>
    <author>Erik T. Ray</author>
    <year>2003</year>
    <price>39.95</price>
    </book>
    <book category="web">
    <title lang="en">XQuery Kick Start</title>
    <author>James McGovern</author>
    <author>Per Bothner</author>
    <author>Kurt Cagle</author>
    <author>James Linn</author>
    <author>Vaidyanathan Nagarajan</author>
    <year>2003</year>
    <price>49.99</price>
    </book>
    </bookstore>
    

    onreadystatechange 事件

    一般情况下,你可以把它理解为callback,以前只知道web是单线程,自从有了ajax,也就有了异步,不得不说是一个巨大的进步。

    属性 描述
    onreadystatechange 存储函数,随着readyState改变
    readyState XMLHttpRequest 状态码
    status 请求状态

    附录

    <!--XMLHttpRequest状态-->
    0: 请求未初始化
    1: 服务器连接已建立
    2: 请求已接收
    3: 请求处理中
    4: 请求已完成,且响应已就绪
    
    <!--请求状态-->
    200: "OK"
    404: 未找到页面
    
    <!--响应就绪状态需要-->
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
        <!--请求成功之后执行的代码-->
        ...
        }
      }
    

    jQuery中的AJAX

    //首先引入jQuery
    <script type="text/javascript" src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script>
    
    //然后直接调用吧
    $.ajax({
        cache: true,
        url: "http://192.168.4.87:8080/login2",
        type:"POST",
        //要提交的数据
        data:{username:$("#user").val(), password:$("#pass").val()},
        //请求失败
        error: function(request) {
        alert("Connection error");
            },
        //请求成功
        success: function(data) {
                
            window.location.href = 'index.html';
          }
      
    });
    

    相关文章

      网友评论

        本文标题:AJAX和服务器交互实例

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