黑马程序员-AJax读书笔记

来源:互联网 发布:c语言if语句的嵌套 编辑:程序博客网 时间:2024/06/13 23:05

------- Windows Phone 7手机开发、.Net培训、期待与您交流! -------


1.XMLHTTPRequest对象用来向服务器发出请求以及获取返回的数据;

eg.function btnClick() {
            var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");   //创建XMLHTTPReqset对象(IE中);
            if (!xmlhttp) {     //如果创建对象发生异常;
                alert("创建xmlHTTP对象发生了异常");
                return false;
            }
            //如果要传送数据时有中文,就必须使用encodeURI()方法;
            //xmlhttp.open("POST", "时就练习Ajax.aspx?textID=" + encodeURI("中文"), false); //设置向处理页面发出post请求的方法;
            xmlhttp.open("POST", "时就练习Ajax.aspx", false);   //设置向处理页面发出post请求的方法;
            //监听onreadystatechange事件,一旦状态发生改变,当为4的时候,就表示服务端返回了数据,再判断是否是想要的数据;
            xmlhttp.onreadystatechange = function () {
                if (xmlhttp.readyState == 4) {      //当为4的时候表示服务器端返回了数据;
                    if (xmlhttp.status == 200) {    //状态码200表示请求成功,300表示重定向,400有关权限问题,500表示错误;
                        document.getElementById("text1").value = xmlhttp.responseText;  //responseText属性为服务器返回的数据;
                    }
                    else {
                        alert("服务器返回错误");
                    }
                }
            }
            xmlhttp.send();     //真正的发送请求;
        }

2.var xmlhttp = new XMLHttpRequest();   //非IE中创建这个对象;

3.JQuery封装方式Ajax查询:
$.post(处理页面,参数,处理返回数据的函数)//post方式
$.get(处理页面,参数,处理返回数据的函数)//get方式;
$.ajax(处理页面,参数,处理返回数据的函数)//post和get方式最终都会调用这个函数,这是一个更底层的函数,可以这么使用(不推荐);
eg.        function btnClick() {
            var amount = $("Text1").val();
            var moneytype = $("Select1").val();
            $.post("JQuery汇率Ajax.aspx", { "amount": amount, "moneytype": moneytype }, function (data, textStatus) {
                if (textStatus == "success") {
                    alert(data);    //data表示数据,textStatus表示返回状态;                
                }
            });
        }

4.Json数据格式:(引入System.Web.Script.Serialization命名空间)
JavaScriptSerializer jss = new JavaScriptSerializer();  //实例化一个提供序列化和反序列化功能的对象;
string json = jss.Serialize(new person() { Name = "tom", Age = 30 });   //调用序列化的方法,序列化一个对象;
Response.Write(json);

5.JavaScript提供的反序列化功能的方法:
$.parseJSON(数据);

6.开发工具自带有实现Ajax功能的控件,在一些数据不太复杂的情况下开发后台程序可以使用,使用这类控件的传输的数据量较大,需特别注意;
(首先放入ScriptManager和UpdatePanel控件,然后将要实现Ajax效果的控件放入UpdatePanel中即可)

7.AjaxControlToolkit.dll组件,提供一系列实现Ajax效果的控件;

8.URL的重写,实现伪静态,进行搜索优化;
在Global.asax的Application_BeginRequest事件中(一旦对这个网站有请求,便会触发,往往一个页面有几十上百次请求,也就会触发几十上百次,比如请求一个js文件,请求一张图片等等,都会触发这个事件),读取HttpContext.Current.Request.Url得到请求的URL地址,然后进行解析得到的URL地址,最后用HttpContext.Current.RewritePath(解析后的地址)方法将解析后的地址重写,也就是访问这个解析后的URL,客户端地址栏中的地址不变;

9.使用微软的URLRewrite,修改配置文件即可显示URL地址重写能力;(可进一步学习)

10.在Global.asax的Application_BeginRequest事件中可以实现防盗链,如果发现不是来自本站的请求,就拒绝进行响应,或者进行特殊处理;

11.Global.asax中的Application_Error事件,当程序中发生了异常,而这个异常没有被捕获处理,那么就会触发这个事件,可以在这个事件中对没有处理的异常记录到日志,以便今后进行修复;

12.能用HTML控件实现的就不要用服务端控件去实现,服务端控件主要是为了更方便进行获取控件相应的值,但这样会有更多冗余的数据,影响响应速度;

13.JQuery的effect实例库,提供有大量的实例效果;

原创粉丝点击