ajax连接数据库加载+三级联动
Posted 涤荡轮回
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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; } } }
以上是关于ajax连接数据库加载+三级联动的主要内容,如果未能解决你的问题,请参考以下文章