zoukankan      html  css  js  c++  java
  • AJAX

    异步请求:
     GET请求:   
        <script type="text/javascript">
            window.onload = function () {
                var btn = document.getElementById("btnGetDate");
                btn.onclick = function () {
                    var xhr; //帮我们去后台发起一个新的请求的异步对象
                    if (XMLHttpRequest) {
                        xhr = new XMLHttpRequest();
                    } else {
                        xhr = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    //参数:(请求的类型,请求的地址,是否是异步请求)
                    xhr.open("Get", "GetDate.ashx?id=3", true);
                    xhr.send(); //此方法不阻塞主线程,而且不一定 什么时候执行,由浏览器决定
                    //我们不知道请求到了什么程度了、发送了没有、发送是否成功只能通过监听xhr对象的
                    //的一些状态的改变事件
                    xhr.onreadystatechange = function () {
                        if (xhr.readyState == 4) {
                            var strData = xhr.responseText;
                            var divresult = document.getElementById("result");
                            divresult.innerHTML = strData;
                        }
                    }
                };
            };
        </script>
     
    post请求:  
        <script type="text/javascript">
            window.onload = function () {
                var btn = document.getElementById("btn1");
                btn.onclick = function () {
                    var xhr;
                    if (XMLHttpRequest) {
                        xhr = new XMLHttpRequest();
                    } else {
                        xhr = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    xhr.open("post", "GetDate.ashx", true);
                    xhr.send({ id: 33, date: 2222 });
                    xhr.onreadystatechange = function () {
                        if (xhr.readyState == 4) {
                            if (xhr.status == 200) {//判断后台返回是否成功
                                var str = xhr.responseText;
                                document.getElementById("result").innerHTML = str;
                            }
                        }
                    }
                };
            };
        </script>
     
    AJAX优点:
        Ajax在本质上时一个浏览器端的技术;
        Ajax技术的主要目的在于局部浇花客户端及服务器端之间的数据;
        Ajax技术的主角XMLHttpRequest的主要特点是能够不用重新载入整个版面来更新资料,也就是所谓 的Refresh Without Reload(轻刷新);
        与服务器之间的沟通,完全是通过Javascript来实行;
        使用XMLHttpRequest本身传送的数据量很小,所以反应会更快,也就是让网络程序更像一个桌面应用程序;
        Ajax就是运用Javascript在后台瞧瞧帮你去跟服务器要资料,最后再由Javascript或DOM来帮你呈现结果,因为所有动作都是由Javascript代劳的,所以省去了网页重载的麻烦,使用者感受不到等待的痛苦;
     
    XMLHttpRequest对象:
        1.在IE和非IE浏览器中创建的方法不同;
        2.它可以异步从服务器端获取txt或者xml数据;
            在IE、Firefox、safari、Opera中创建的javascript代码为:
                    var xhr = new XMLHttpRequest();
            在IE5\6中的代码为:
                    var xhr = new ActiveXObject("Microsoft.XMLHTTP");
            

     

    function createXmlHttp() {//创建xhr对象
                    var xhobj = false;
                    try {
                        xhobj = new ActiveXObject("Msxml2.XMLHTTP"); // ie msxml3.0+
                    } catch (e) {
                        try {
                            xhobj = new ActiveXObject("Microsoft.XMLHTTP"); //ie msxml2.6
                        } catch (e2) {
                            xhobj = false;
                        }
                    }
                    if (!xhobj && typeof XMLHttpRequest != 'undefined') {// Firefox, Opera 8.0+, Safari
                        xhobj = new XMLHttpRequest();
                    }
                    return xhobj;
                }
        
    异步请求的基本步骤:
    1.  创建对象;new
    2. 创建请求;open()
    3. 发送请求;send() 
                btn.onclick = function () {
                    //创建对象,点击按钮的时候启动
                    var xhr; //帮我们去后台发起一个新的请求的异步对象
                    if (XMLHttpRequest) {
                        xhr = new XMLHttpRequest();
                    } else {
                        xhr = new ActiveXObject("Microsoft.XMLHTTP");
                    }
                    //参数:(请求的类型,请求的地址,是否是异步请求)
                    xhr.open("Get", "GetDate.ashx?" + new Date(), true);
                    xhr.send(); //此方法不阻塞主线程,而且不一定 什么时候执行,由浏览器决定
                    //我们不知道请求到了什么程度了、发送了没有、发送是否成功只能通过监听xhr对象的
                    //的一些状态的改变事件
                    xhr.onreadystatechange = function () {
                        if (xhr.readyState == 4) {
                            var strData = xhr.responseText;
                            var divresult = document.getElementById("result");
                            divresult.innerHTML = strData;
                        }
                    }
                };
     
    异步实现增删改查:
     
    将list转换成json格式:
        
    StringBuilder sb = new StringBuilder();
        sb.Append("[");
        foreach(var item in userList)
        {
            sb.Append("{");
            sb.Appendformat("\"Id\":\"{0}\",\"LoginName\":\"{1}\"",item.ID,item.LoginName);
            sb.Append("}");
        }
        sb = sb.remove(sb.Length - 1,1);//去掉最后的“,”;     
        sb.Append("]");
     
     
    if(confirm("ok")){
     
    }
    system.web.script.serialization
     
    使用js序列化:
        using system.web.Extension //添加引用
        using system.web.script.serialization;
     
     
    遍历json对象:
        for(var i =0 ;i<data.length;i++)
        {
            var user = data[i];
            <tr><td>user.ID</td></tr>
        }
     
    分页:
            function InitNavPage(strData) {
                $.get("GetNavPage.ashx", strData, function (result) {
                    $('#navPage').html(result);
                    $('.pageLink').click(function () {
                        //点击分页超链接,异步刷新列表数据,同时也刷新分页标签
                        var strHref = $(this).attr("href");
                        strHref = strHref.substring(1); //获取发送的参数
                        alert(strHref);
                        InitNavPage(strHref); //重新刷新分页控件
                        return false;
                    });
                });
            }
     
     
  • 相关阅读:
    Docker 学习4 Docker容器虚拟化网络概述
    Ceph 命令
    Day_09【常用API】扩展案例1_程序中使用一个长度为3的对象数组,存储用户的登录名和密码……
    Day_08【面向对象】扩展案例4_年龄为30岁的老王养了一只黑颜色的2岁的宠物……
    Day_08【面向对象】扩展案例3_使用多态的形式创建缉毒狗对象,调用缉毒方法和吼叫方法
    Day_08【面向对象】扩展案例2_测试旧手机新手机类,并给新手机实现玩游戏功能
    Day_08【面向对象】扩展案例1_测试项目经理类和程序员类
    用两个栈实现队列
    二叉树前序、中序、后序遍历相互求法
    洗牌
  • 原文地址:https://www.cnblogs.com/xuquantong/p/2824287.html
Copyright © 2011-2022 走看看