zoukankan      html  css  js  c++  java
  • AJAX常用方法详解

    简介

    Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式网页应用的网页开发技术。
    
    Ajax = 异步 JavaScript 和 XML(标准通用标记语言的子集)。
    
    Ajax 是一种用于创建快速动态网页的技术。
    
    Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。
    
    通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
    
    传统的网页(不使用Ajax)如果需要更新内容,必须重载整个网页页面。
    

    1.AJAX使用基本技巧和实现原理

    先看一个ajax小例子:

    <html>
    <body>
        #设置一个事件来触发
        <div id="contentid">
            <h3>this is a ajax test!!!</h3>
            <button type="button" onclick="loadXMLDoc()" >chenge Content</button>
        </div>
        <script type="text/javascript">
            #具体AJAX实现
            function loadXMLDoc(){
                #创建XMLHttpRequest对象,它是AJAX的基础
                var xmlhttp;
                #判断浏览器是否支持XMLHttpRequest
                if(window.XMLHttpRequest)
                {
                     //  IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
                     xmlhttp = new XMLHttpRequest();
                }
                else
                {
                    // IE6, IE5 浏览器执行代码
                    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                }
                #设置异步响应事件处理
                xmlhttp.onreadystatechange = function()
                {
                    if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
                    {
                        document.getElementById("contentid").innerHTML=xmlhttp.responseText;
                    }
                }
                #例1:使用GET发送HTTP请求
                xmlhttp.open("GET","/user/?name=jack&age=33",true); #异步方式获取user信息
                xmlhttp.send() #发送请求到服务器
                #例2:使用POST发送请求
                xmlhttp.open("POST","/login_up/",false);
                xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
                xmlhttp.send("name=jack&passwd=1234");
    
            }
        </script>
    
    </body>
    </html>
    

    AJAX向服务器发送请求:

    1.调用open(method, url ,async)设置请求信息
    
    2.调用send([string])发送
    
    3.调用setRequestHeader(header,value)设置HTTP请求头
    

    open()参数解释:

    method 请求类型: GET/POST
    url 请求资源路径:/index.html 、/index.html?name=jack& age=23
    

    async是否异步 true(异步) false(同步)

    #1.当async=true 异步响应需要设置onreadystatechange响应事件就绪状态的执行函数,放置在xmlhtpp.open()前面
    xmlhttp.onreadystatechange = function(){
        #判断响应状态码
        if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
        {
            document.getElementById("contentid").innerHTML=xmlhttp.responseText;
        }
    }
    
    #2.当async=false时,不要设置onreadystatechange函数
    xmlhttp.open("GET","/article?user=jack",false);
    xmlhttp.send();
    document.getElementById("contentid").innerHTML=xmlhttp.responseText;
    
    属性 描述
    onreadystatechange 每当readyState改变是,就会触发这个事件
    readyState(XMLHttpRequest的一个属性) 保存XMLHttpRequest的状态: 0:请求未初始化1:服务器连接已建立 2:请求已接收 3:请求处理中 4: 请求已完成,且响应已就绪
    status(XMLHttpRequest的一个属性) 200: "OK" 404:页面未找到
    其中:onreadystatechange被触发5次(0-4),readyState每一次变化都会触发
    

    send()参数解释:

    只有当method=POST时,可以使用send("name=jack&age=23")发送表格内容
    

    POST和GET:

    与 POST 相比,GET更简单也更快,并且在大部分情况下都能用。
    

    然而,在以下情况中,请使用 POST 请求:

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

    服务器响应:

    属性 描述
    responseText 文本形式的响应数据
    responseXML XML形式的响应数据
  • 相关阅读:
    [AHOI2006]文本编辑器 Splay tree区间操作
    HDU-3487 Play with Chain Splay tee区间反转,移动
    HDU-4619 Warm up 2 二分匹配
    HDU-4618 Palindrome Sub-Array 暴力枚举
    HDU-4616 Game 树形DP
    HDU-4614 Vases and Flowers 线段树区间更新
    HDU-4612 Warm up 边双连通分量+缩点+最长链
    HDU-4611 Balls Rearrangement 循环节,模拟
    HDU-4605 Magic Ball Game 树状数组+离散+dfs
    HDU-3436 Queue-jumpers 树状数组 | Splay tree删除,移动
  • 原文地址:https://www.cnblogs.com/lonelyhiker/p/8609789.html
Copyright © 2011-2022 走看看