zoukankan      html  css  js  c++  java
  • Ajax基础

    一、简介

    AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。

    AJAX 是一种用于创建快速动态网页的技术。

    AJAX通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。

    AJAX 不是新的编程语言,而是一种使用现有标准的新方法。

    AJAX 最大的优点是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。

    AJAX 不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。

    AJAX 工作原理

    二、AJAX创建

    以User表为例,列表展示数据,当点击按钮时展示数据

    1.新建一个LINQ to SQL 类(Web.dbml),将User表和Nation表拉到类中

     数据扩展

    2.新建一个纯HTML界面(HtmlPage.html)和一个一般处理程序(userajax.ashx)

    (1)body内代码

    复制代码
     1  <table id="tb1" style=" text-align: center;  100%;">
     2     <thead>
     3         <tr style="color: #ff6a00;">
     4             <td>用户名</td>
     5             <td>密码</td>
     6             <td>昵称</td>
     7             <td>性别</td>
     8             <td>生日</td>
     9             <td>年龄</td>
    10             <td>民族</td>
    11         </tr>
    12     </thead>
    13     <tbody>
    14     </tbody>
    15     </table>
    16     <input type="button" value="加载" id="btn1" />
    复制代码

    (2)js代码部分

    复制代码
     1 <script>
     2     //点击加载按钮
     3     $("#btn1").click(function () {
     4         //编写ajax语句,将数据提交到某个服务端去
     5         $.ajax({
     6             url: "ajax/userajax.ashx",//将数据要提交到哪个服务端
     7             data: {},//将什么数据提交到服务端去,{}内基本格式为"key":"要传的数据"
     8             type: "post",//用什么样的方式将数据提交过去
     9             dataType: "json",//返回一个什么样的数据类型
    10             //请求完成
    11             success: function (data) {
    12                 $("#tb1 tbody").empty();//清空tbody
    13                 for (i in data) {
    14                     var str = "<tr style="">";
    15                     str += "<td>" + data[i].username + "</td>";
    16                     str += "<td>" + data[i].password + "</td>";
    17                     str += "<td>" + data[i].nickname + "</td>";
    18                     str += "<td>" + data[i].sex + "</td>";
    19                     str += "<td>" + data[i].birthday + "</td>";
    20                     str += "<td>" + data[i].age + "</td>";
    21                     str += "<td>" + data[i].nation + "</td>";
    22                     str += "</tr>";
    23                     $("#tb1 tbody").append(str);
    24                 }
    25             },//success
    26             //请求失败
    27             error: function () {
    28                 alert('服务器连接失败!!!');
    29             }
    30         });//ajax
    31     });//btn1.click
    32 </script>
    复制代码

    (3)userajax.ashx内代码

    复制代码
     1 <%@ WebHandler Language="C#" Class="userajax" %>
     2 
     3 using System;
     4 using System.Web;
     5 using System.Collections;
     6 using System.Collections.Generic;
     7 using System.Linq;
     8 using System.Text;
     9 
    10 public class userajax : IHttpHandler
    11 {
    12 
    13     public void ProcessRequest(HttpContext context)
    14     {
    15         //有数据接收时,用context.Request["key"];将ajax传过来的数据取出来
    16         int count = 0;//前面是否有数据
    17         string end = "[";//创建json对象,设置默认值,基本格式为{"key":"value","":"","":""},有多条时用[]括住,每条之间用,隔开
    18         using (WebDataContext con = new WebDataContext())
    19         {
    20             List<User> ulist = con.User.ToList();
    21             foreach (User u in ulist) {
    22                 //前面有数据
    23                 if (count>0) {
    24                     end += ",";
    25                 }
    26                 end += "{"username":""+u.UserName+"","password": ""+u.PassWord+"","nicknane":""+u.NickName+"","sex": ""+u.SexStr+"","birthday": ""+u.BirStr+"","age":""+u.Age+"","nation":""+u.NationName+"" }";
    27                 count++;
    28             }
    29         }
    30         end += "]";
    31             context.Response.Write(end);
    32             context.Response.End();
    33      
    34     }
    35 
    36     public bool IsReusable
    37     {
    38         get
    39         {
    40             return false;
    41         }
    42     }
    43 
    44 }
    复制代码

    三、json与xml

    xml和json的作用:在不同语言之间进行数据传递

    最早使用的数据类型是 xml

    优势:

    A.格式统一,符合标准;
    B.容易与其他系统进行远程交互,数据共享比较方便。
    劣势:
    1、代码量较大
    2、结构不清晰
    3、解析起来麻烦

    现在使用的数据类型是 json
    优势:
    1、结构清晰
    2、类似于面向对象的解析方式

    四、ajax完整结构

    复制代码
     1  //编写ajax语句,将数据提交到某个服务端去
     2         $.ajax({
     3             url: "ajax/Login.ashx",//将数据要提交到哪个服务端
     4             data: { "un": $("#txt_uname").val().trim(), "pwd": $("#txt_pwd").val() },//将什么数据提交到服务端去,{}内基本格式为"key":"要传的数据"
     5             type: "post",//用什么样的方式将数据提交过去
     6             dataType: "json",//返回一个什么样的数据类型
     7             success: function (data) {//请求完成
     8                 if (data.has == '1') {
     9                     $("#btn1").attr("disabled", "disabled").val('跳转中...');
    10                     window.setTimeout(function () {
    11                         window.location.href = "HtmlPage2.html";
    12                     }, 3000);
    13                 }
    14                 else {
    15                     $("#sp1").text("用户名密码输入错误!");
    16                     $("#btn1").removeAttr("disabled").val('登录');
    17                 }
    18             },
    19             error: function () {//服务器连接错误
    20                 $("#sp1").text("服务器连接失败!");
    21                 $("#btn1").removeAttr("disabled").val('登录');
    22             },
    23             beforeSend: function () {//已向服务器发送请求,请求完成前
    24                 $("#btn1").attr("disabled", "disabled").val('登录中...');
    25             },
    26             complete: function () {//请求完成后,可有可无
    27                 $("#btn1").removeAttr("disabled").val('登录');
    28             }
    29 
    30 
    31         });
    复制代码

    附: ajax与jQuery实现省市区三级联动:

    <div>
            <asp:DropDownList ID="DropDownList1" runat="server"></asp:DropDownList>
            <asp:DropDownList ID="DropDownList2" runat="server"></asp:DropDownList>
            <asp:DropDownList ID="DropDownList3" runat="server"></asp:DropDownList>
        </div>
    HTML代码
     1 bind1($("#DropDownList1"), '0001', '1');
     2     function bind1(drop, pc, key) {
     3         $.ajax({
     4             url: "ajax/china.ashx",
     5             data: { "pcode": pc },
     6             type: "post",
     7             dataType: "json",
     8             success: function (data) {
     9                 drop.empty();
    10                 for (i in data) {
    11                     var str = "<option value="" + data[i].code + "">" + data[i].name + "</option>";
    12                     drop.append(str);
    13                 }
    14                 if (key == "1")
    15                     {
    16                     bind1($("#DropDownList2"), $("#DropDownList1").val(), '2');
    17                 }
    18                 if (key == "2") {
    19                     bind1($("#DropDownList3"), $("#DropDownList2").val(), '3');
    20                 }
    21 
    22             },
    23             error: function () {
    24                 alert('服务器连接失败!');
    25             }
    26         });
    27     }
    28     $("#DropDownList1").change(function () {
    29         bind1($("#DropDownList2"), $(this).val(), '2');
    30     });
    31 
    32     $("#DropDownList2").change(function () {
    33         bind1($("#DropDownList3"), $(this).val(), '3');
    34     });
    js代码
     1 using System;
     2 using System.Web;
     3 using System.Collections;
     4 using System.Collections.Generic;
     5 using System.Linq;
     6 using System.Text;
     7 public class china : IHttpHandler {
     8     
     9     public void ProcessRequest (HttpContext context) {
    10         string pcode = context.Request["pcode"];
    11         StringBuilder end = new StringBuilder();
    12         int count = 0;
    13 
    14         end.Append("[");
    15         using (mydbDataContext con = new mydbDataContext())
    16         {
    17             List<ChinaStates> clist = con.ChinaStates.Where(r => r.ParentAreaCode == pcode).ToList();
    18 
    19             foreach (ChinaStates c in clist)
    20             {
    21                 if (count > 0)
    22                     end.Append(",");
    23                 
    24                 end.Append("{"code":""+c.AreaCode+"","name":""+c.AreaName+""}");
    25                 count++;
    26             }
    27         }
    28 
    29         end.Append("]");
    30         context.Response.Write(end);
    31         context.Response.End();
    32     }
    33  
    34     public bool IsReusable {
    35         get {
    36             return false;
    37         }
    38     }
    39 
    40 }
    china.ashx
  • 相关阅读:
    Linux systemctl命令笔记
    网站建设部署与发布--笔记4-部署mysql
    网站建设部署与发布--笔记3-部署Nginx
    c++模板文件,方便调试与运行时间的观察
    最大公约数-辗转相除及其证明
    汉诺塔-递归
    全排列算法-递归
    蓝桥-愤怒的小鸟
    PAT Basic 1032
    浮点数精度的修正 相等,大于小于
  • 原文地址:https://www.cnblogs.com/1711643472qq/p/6179541.html
Copyright © 2011-2022 走看看