• ASP.NET AJAX


    ASP.NET AJAX

    AJAX

    AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。

    AJAX = 异步 JavaScriptXML标准通用标记语言的子集)。
    AJAX 是一种用于创建快速动态网页的技术。
    通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
    没有AJAX会怎么样?普通的ASP.Net每次执行服务端方法的时候都要刷新当前页面。在youku看视频的过程中如果提交评论,页面就不会刷新,视频不会被打断。开发一个看效果:用<video  src="diaosi.mp4" autoplay controls></video>播放视频(只有支持html5的浏览器能播放),然后放一个评论功能,服务器只是存到一个文件中。
    AJAX是一种进行页面局部异步刷新的技术。用AJAX向服务器发送请求和获得服务器返回的数据并且更新到界面中,不是整个页面刷新,而是在HTML页面中使用JavaScript创建XMLHTTPRequest(简称XHR)对象来向服务器发出请求以及获得返回的数据,在页面中由XMLHTTPRequest来发出Http请求和获得服务器的返回数据,这样页面就不会刷新了。 XMLHTTPRequest是AJAX的核心对象。局部:一小部分刷新,其他部分不刷新;异步:网络请求期间,浏览器不卡。
     1 var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP'); //创建XMLHTTP对象,考虑兼容性
     2             xmlhttp.open("POST", "AJAXTest.ashx?i=5&j=10", true); //“准备”向服务器的GetDate1.ashx发出Post请求(GET可能会有缓存问题),Post请求浏览器一定不会缓存。这里还没有发出请求。true代表异步请求。
     3             xmlhttp.onreadystatechange = function ()
     4             {
     5                 if (xmlhttp.readyState == 4) //readyState == 4 表示服务器返回完成数据了。之前可能会经历2(请求已发送,正在处理中)、3(响应中已有部分数据可用了,但是服务器还没有完成响应的生成)
     6                 {
     7                     if (xmlhttp.status == 200) //如果状态码为200则是成功
     8                     {
     9                         alert(xmlhttp.responseText);
    10                     }
    11                     else
    12                     {
    13                         alert("AJAX服务器返回错误!");
    14                     }
    15                 }
    16             }
    17 //不要以为if (xmlhttp.readyState == 4) {在send之前执行!!!!
    18             xmlhttp.send(); //这时才开始发送请求
    19 //发出请求后不等服务器返回数据,就继续向下执行,所以不会阻塞,界面就不卡了,这就是AJAX中“A”的含义“异步”。试着在ashx加一句Thread.Sleep(3000);

    简单的ajax封装:

     1  function ajax(url,onsuccess,onfail)
     2         {
     3             var xmlhttp = window.XMLHttpRequest ? new XMLHttpRequest() : new ActiveXObject('Microsoft.XMLHTTP');
     4             xmlhttp.open("POST", url, true);
     5             xmlhttp.onreadystatechange = function ()
     6             {
     7                 if (xmlhttp.readyState == 4)
     8                 {
     9                     if (xmlhttp.status == 200)
    10                     {
    11                         onsuccess(xmlhttp.responseText);
    12                     }
    13                     else
    14                     {
    15                         onfail(xmlhttp.status);
    16                     }
    17                 }
    18             }
    19             xmlhttp.send(); //这时才开始发送请求
    20         }

     Json

    AJAX传递复杂数据如果自己进行格式定义的话会经历组装、解析的过程,因此AJAX中有一个事实上的数据传输标准JSon。Json(是一个标准,就像XML一样,Json规定了对象以什么样的格式保存为一个字符串)将复杂对象序列化为一个字符串,在浏览器端再将字符串反序列化为JavaScript可以读取的对象。Json被几乎所有语言支持。Json就是一个把对象(js、java、.net)表示为字符串的标准。
    Json是什么,Json就是javascript对象或者数组格式的字符串,Http协议不能传递JavaScript对象,所以要转换为字符串进行传输。
     JavaScript对象(键值对) var person= {name:'rupeng',age:8};
     JavaScript数组:var names = ['rupeng','qq','taobao'];
     JavaScript对象数组:var persons = [{name:'rupeng',age:8}, {name:'qq',age:15}, {name:'taobao',age:10}];
     JavaScript对象关联:var p = {name:'yzk',child:{name:'timi',age:1}};
     1     <script type="text/javascript">
     2 
     3         var p1 = { name: 'rupeng', age: 8 };
     4         //alert(p1.name);
     5         var strs1 = ["rupeng", "baidu", "qq"];
     6         for (var i = 0; i < strs1.length; i++) {
     7             //alert(strs1[i]);
     8         }
     9 
    10         var persons = [{ name: 'rupeng', age: 8 }, { name: 'baidu', age: 15 }, { name: 'qq', age: 18 }];
    11         for (var i = 0; i < persons.length; i++) {
    12             var person = persons[i];
    13            // alert(person.name+"|"+person.age);
    14         }
    15 
    16         var dog = { name: 'xiaoquan', age: 3, master: { name: 'china', renkou: 13 } };
    17         //alert(dog.name);
    18         //alert(dog.master.renkou);
    19 
    20         /*
    21         var dog2 = { name: 'xiaoquan' };
    22         var p2 = { name: 'china', renkou: 13 };
    23         dog2.master = p2;*/
    24 
    25         //json的标准就是js中字典、数组的格式。
    27         var s = "{ name: 'rupeng', age: 8 }";//ajax从服务器中"{ name: 'rupeng', age: 8 }"这样一个字符串,怎么样取出name的值呢?首先要把这个字符串转换为JavaScript对象
    28        // alert(s);
    29         //alert(s.name);
    30         var p2 = eval("(" + s + ")");//p2就是一个对象了{ name: 'rupeng', age: 8 }
    31         //eval把一个json格式的字符串解析为一个js对象
    32         alert(p2.name);
    33         var s = "[{ name: 'rupeng', age: 8 }, { name: 'baidu', age: 15 }, { name: 'qq', age: 18 }]";
    34         var persons = eval("("+s+")");//eval()动态运行JavaScript
    35         for (var i = 0; i < persons.length; i++) {
    36             var person = persons[i];
    37             alert(person.name+"|"+person.age);
    38         }
    39     </script>
    C#转换Json:
    1  int[] nums = new int[] {3,5,89};  
    2             JavaScriptSerializer jss = new JavaScriptSerializer();
    3             string json = jss.Serialize(nums);
    4             context.Response.Write(json);
    JQuery的AJAX封装
    1 $.ajax({
    2                 type: "post", url: "Ajax1.ashx",
    3                 data: { i1: $("#txt1").val(), i2: $("#txt2").val() },
    4                 success: function (data, txtStatus) {alert(data);},
    5                 error: function () { alert("错误"); }
    6             });

     三种Json装换JavaScript的方法:

    1 var nums = $.parseJSON(resTxt);//json字符串转换为javascript对象
     1 $.ajax({
     2                 type: "post", url: "JQueryAJAXTest1.ashx",
     3                 dataType:"json",
     4                 data: { i1: 10, i2: 3 },
     5                 success: function (nums) {
     6                     //如果把dataType设置为"json",那么success的第一个参数就是json转换后的JavaScript对象,不需要再手动parseJson
     7                     for (var i = 0; i < nums.length; i++) {
     8                         alert(nums[i]);
     9                     }
    10                 },
    11                 error: function () {
    12                     alert("ajax出错");
    13                 }
    1 context.Response.ContentType = "application/json";//C#

     JQuery AJAX其他

    表单序列化(*):

    如果表单元素放到form中,并且按照http的标准(有name等)设置,那么$("#form1").serializeArray()就可以得到一个键值对数组,把这个值赋值给$.ajax的data属性。

    全局事件:

    1)全局Loading的显示
    $("body").bind("ajaxSend", function () {
                   //显示Loading
                }).bind("ajaxComplete", function () {
                    //隐藏loading
                });
    2)、 ajaxError  全局错误处理
  • 相关阅读:
    Flask 入门(五)
    Mac 系统root
    Flask 入门(四)
    Flask 入门(三)
    Flask 入门(二)
    Flask 入门(一)(Mac 系统)
    linux升级python2.7到3.7.0
    [20170825]11G备库启用DRCP连接3.txt
    [20170824]11G备库启用DRCP连接.txt
    [20170728]oracle保留字.txt
  • 原文地址:https://www.cnblogs.com/Tan-sir/p/4725770.html
Copyright © 2020-2023  润新知