美文网首页
【Ajax】

【Ajax】

作者: 年少懵懂丶流年梦 | 来源:发表于2017-02-24 10:35 被阅读19次
    一、Ajax技术简介

    Ajax(Asynchronous JavaScript and XML,异步JavaScript和XML),Ajax 不是新的编程语言,而是一种使用现有标准的新方法。

    Ajax 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。Ajax 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。

    Ajax本身是一门综合性的技术,其主要应用包含了HTML、JavaScript、XML、DOM、XMLHttpRequest等页面技术,但是在这之中最重要的就是XMLHttpRequest对象。

    Ajax技术并不只依赖于Java
    Ajax技术并不是只能在Java中使用,现在的各个动态Web实现技术,如PHP、ASP.NET都已经很好的支持了Ajax技术。

    二、XMLHttpRequest对象

    在Ajax中主要是通过XMLHttpRequest对象处理发送异步请求和回应的,所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均支持 XMLHttpRequest对象(IE5 和 IE6 使用 ActiveXObject)。如果要创建一个XMLHttpRequest对象则必须使用JavaScript。

    为了应对所有的现代浏览器,包括 IE5 和 IE6,请检查浏览器是否支持 XMLHttpRequest对象。如果支持,则创建 XMLHttpRequest 对象。如果不支持,则创建 ActiveXObject

    <script>
        var xmlHttp;
        function createXMLHttp() {
            if(window.XMLHttpRequest) {
                xmlHttp = new XMLHttpRequest();
            } else {
                // IE 内核的浏览器
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
        }
    
    </script>
    

    XMLHttpRequest对象中定义了的属性:

    readState一共有5中取值:

    • 0:请求没有发出(在调用open()函数之前)。
    • 1:请求已经建立但还没有发出(在调用send()函数之前)。
    • 2:请求已经发出正在处理之中(这里通常可以从响应得到内容头部)。
    • 3:请求已经处理,正在接受服务器的信息,响应中通常有部分数据可用,但是服务器还没有完成响应。
    • 4:响应已经完成,可以访问服务器响应并使用它。

    XMLHttpRequest对象中的方法:

    XMLHttpRequest对象的open()和send()方法在回调函数中出现比较多,一般都会用open()方法设置一个提交的路径,并通过地址重写的方式设置一些请求的参数,而真正的发出请求操作可以通过send()方法完成。

    如果是POST方法则需要在send()内传入数据

    GET 还是 POST?
    与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。
    然而,在以下情况中,请使用 POST 请求:

    • 无法使用缓存文件(更新服务器上的文件或数据库)
    • 向服务器发送大量数据(POST 没有数据量限制)
    • 发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
    三、第一个Ajax程序

    请求一个静态页面

    <!DOCTYPE HTML>
    <html>
    <head>
    <title>JSP page</title>
    
    <script>
        var xmlHttp;
        function createXMLHttp() {
            if (window.XMLHttpRequest) {
                xmlHttp = new XMLHttpRequest();
            } else {
                // IE 内核的浏览器
                xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
        }
    
        function showMsg() {
            createXMLHttp();
            xmlHttp.open("POST", "content.htm");
            xmlHttp.onreadystatechange = showMsgCallback;
            xmlHttp.send(null);
        }
    
        function showMsgCallback() {
            if (xmlHttp.readyState == 4) {    // 数据返回完毕
                if (xmlHttp.status == 200) {     // HTTP操作正常
                    //接收返回的内容
                    var text = xmlHttp.responseText;
                    //设置使用的CSS样式表
                    //document.getElementById("msg").className = "样式表名称";
                    document.getElementById("msg").innerHTML = text;
                }
            }
        }
    </script>
    
    </head>
    
    <body>
        <input type="button" onclick="showMsg()" value="调用Ajax显示内容">
        <span id="msg"></span>
    </body>
    </html>
    

    如需获得来自服务器的响应,请使用XMLHttpRequest 对象的 responseTextresponseXML属性。

    onreadystatechange 事件
    当请求被发送到服务器时,我们需要执行一些基于响应的任务。
    每当 readyState 改变时,就会触发 onreadystatechange 事件。
    readyState 属性存有 XMLHttpRequest 的状态信息。
    下面是 XMLHttpRequest 对象的三个重要的属性:

    在 onreadystatechange 事件中,我们规定当服务器响应已做好被处理的准备时所执行的任务。
    当 readyState 等于 4 且状态为 200 时,表示响应已就绪:

    xmlhttp.onreadystatechange=function()
    {
        if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
            document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
        }
    }
    

    注意: onreadystatechange 事件被触发 5 次(0 - 4),对应着 readyState 的每个变化。

    相关文章

      网友评论

          本文标题:【Ajax】

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