ajax连接数据库加载+三级联动
ajax连接数据库加载
ajax是指一种创建交互式网页应用的网页开发技术。
AJAX = 异步JS和XML(标准通用标记语言的子集)。
AJAX 是一种用于创建快速动态网页的技术。
通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
传统的网页(不使用 AJAX)如果需要更新内容,必须重载整个网页页面。
优点:是在不重新加载整个页面的情况下,可以与服务器交换数据并更新部分网页内容。
不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。
1.创建AJAX
点击按钮加载数据。
.新建一个LINQ to SQL 类,将User表和Nation表拉到类中
创建一个 web窗体 或者纯html界面 +一个一般处理程序LoadUserajax.ashx
(1)body内代码
1 <table id="tb1" style=" text-align: center; width: 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/LoadUserajax.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 }
2.json与xml
xml和json的作用:在不同语言之间进行数据传递
最早使用的数据类型是 xml
劣势:
1、代码量较大
2、结构不清晰
3、解析起来麻烦
现在使用的数据类型是 json
优势:
1、结构清晰
2、类似于面向对象的解析方式
json基本格式:
{"key":"value","":"","":""}
{"username":"","password":"","nickname":"","sex":"","birthday":"","nation":""}
-------------------------------------------------------
三级联动 不刷新界面
1.创建三个 DropDownList
2.js
bind1($("#DropDownList1"), '0001', '1'); function bind1(drop, pc, key) { $.ajax({ url: "ajax/china.ashx", data: { "pcode": pc }, type: "post", dataType: "json", success: function (data) { drop.empty(); for (i in data) { var str = "<option value=\"" + data[i].code + "\">" + data[i].name + "</option>"; drop.append(str); } if (key == "1") { bind1($("#DropDownList2"), $("#DropDownList1").val(), '2'); } if (key == "2") { bind1($("#DropDownList3"), $("#DropDownList2").val(), '3'); } }, error: function () { alert('服务器连接失败!'); } }); } $("#DropDownList1").change(function () { bind1($("#DropDownList2"), $(this).val(), '2'); }); $("#DropDownList2").change(function () { bind1($("#DropDownList3"), $(this).val(), '3'); });
3.一般处理程序
using System; using System.Web; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; public class china : IHttpHandler { public void ProcessRequest (HttpContext context) { string pcode = context.Request["pcode"]; StringBuilder end = new StringBuilder(); int count = 0; end.Append("["); using (mydbDataContext con = new mydbDataContext()) { List<ChinaStates> clist = con.ChinaStates.Where(r => r.ParentAreaCode == pcode).ToList(); foreach (ChinaStates c in clist) { if (count > 0) end.Append(","); end.Append("{\"code\":\""+c.AreaCode+"\",\"name\":\""+c.AreaName+"\"}"); count++; } } end.Append("]"); context.Response.Write(end); context.Response.End(); } public bool IsReusable { get { return false; } } }

浙公网安备 33010602011771号