首页 > 开发 > AJAX > 正文

jQuery+ajax实现无刷新级联菜单示例

2024-09-01 08:33:02
字体:
来源:转载
供稿:网友

这篇文章主要介绍了jQuery+ajax实现无刷新级联菜单示例,代码很完整,也非常实用,有需要的小伙伴可以参考下。

前台用AJAX直接调用后台方法,老有人发帖提问,没事做个示例

下面是做的一个前台用JQUERY,AJAX调用后台方法做的无刷新级联菜单

CasMenu.aspx页面:

 

 
  1. <%@ Page Language="C#" AutoEventWireup="true" CodeFile="CasMenu.aspx.cs" Inherits="_Default" %>  
  2.  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
  4. <html xmlns="http://www.w3.org/1999/xhtml">  
  5. <head id="Head1" runat="server">  
  6. <title>Porschev--前台JS(Jquery)调用后台方法 级联菜单</title>  
  7. <script src="js/jquery-1.3.2-vsdoc.js" mce_src="js/jquery-1.3.2-vsdoc.js" type="text/javascript"></mce:script>  
  8. <script type="text/javascript">  
  9. $(function() {  
  10. $("#selPro").change(function() { //省份下拉菜单的change事件  
  11. var params = '{str:"' + $(this).val() + '"}'//此处参数名要注意和后台方法参数名要一致  
  12. $.ajax({  
  13. type: "POST"//提交方式  
  14. url: "CasMenu.aspx/ShowCity"//提交的页面/方法名  
  15. data: params, //参数(如果没有参数:null)  
  16. dataType: "text"//类型  
  17. contentType: "application/json; charset=utf-8",  
  18. beforeSend: function(XMLHttpRequest) {  
  19. $('#tipsDiv').text("正在查询...");  
  20. },  
  21. success: function(msg) {  
  22. $('#tipsDiv').text("查询成功!");  
  23. $("#selCity option").each(function() {  
  24. $(this).remove(); //移除原有项  
  25. });  
  26. $("<option value='0'>===请选择===</option>").appendTo("#selCity"); //添加一个默认项  
  27. $(eval("(" + msg + ")").d).appendTo("#selCity"); //将返回来的项添加到下拉菜单中  
  28. },  
  29. error: function(xhr, msg, e) {  
  30. alert("error");  
  31. }  
  32. });  
  33. });  
  34. });  
  35. </script>  
  36. </head>  
  37. <body>  
  38. <form id="form1" runat="server">  
  39. <div>  
  40. Porschev--前台JS(Jquery)调用后台方法 级联菜单<br />  
  41. <br />  
  42. <select id="selPro" name="selPro">  
  43. <%=strPro %>  
  44. </select>省(直辖市)  
  45. <select id="selCity" name="selCity">  
  46. <option value="0">===请选择===</option>  
  47. </select>(市)  
  48. </div>  
  49. <div id="tipsDiv">  
  50. </div>  
  51. </form>  
  52. </body>  
  53. </html>  

CasMenu.aspx.cs

 

 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Web;  
  5. using System.Web.UI;  
  6. using System.Web.UI.WebControls;  
  7. using CasMenuModels;  
  8. using CasMenuBLL;  
  9. using System.Text;  
  10. public partial class _Default : System.Web.UI.Page  
  11. {  
  12. public static string strPro = string.Empty; //省份下拉项  
  13. public static string strCity = string.Empty; //城市下拉项  
  14. protected void Page_Load(object sender, EventArgs e)  
  15. {  
  16. if (!IsPostBack)  
  17. {  
  18. }  
  19. ShowPro();  
  20. }  
  21.  
  22. #region##省份下拉列表框  
  23. /// <summary>  
  24. /// 省份下拉列表框  
  25. /// </summary>  
  26. /// <returns></returns>  
  27. public string ShowPro()  
  28. {  
  29. StringBuilder str = new StringBuilder(); //得到所有省份集合  
  30. List<CasMenuModels.Province> list = new CasMenuBLL.ProvinceManager().GetAllProvince(); //添加一个初始项  
  31. str.Append("<option value=/"");  
  32. str.Append("0");  
  33. str.Append("/">");  
  34. str.Append("===请选择===");  
  35. str.Append("</option>");  
  36.  
  37. //循环追加省份下拉项  
  38. foreach (CasMenuModels.Province p in list)  
  39. {  
  40. str.Append("<option value=/"");  
  41. str.Append(p.ProvinceId);  
  42. str.Append("/">");  
  43. str.Append(p.ProvinceName);  
  44. str.Append("</option>");  
  45. }  
  46. return strPro = str.ToString();  
  47. }  
  48.  
  49. #endregion #region##城市下拉列表框  
  50. /// <summary>  
  51. /// 城市下拉列表框  
  52. /// </summary>  
  53. /// <param name="str">省份ID</param>  
  54. /// <returns></returns>  
  55. [System.Web.Services.WebMethod()]  
  56. public static string ShowCity(string str) //方法是静态的  
  57. {  
  58. StringBuilder strCi = new StringBuilder();  
  59. if (str == "0"//为初始项  
  60. {  
  61. strCi.Append("<option value=/"");  
  62. strCi.Append("请选择");  
  63. strCi.Append("/">");  
  64. strCi.Append("请选择");  
  65. strCi.Append("</option>");  
  66. }  
  67. else 
  68. {  
  69. List<CasMenuModels.City> list = new CasMenuBLL.CityManager().GetAllByProId(Convert.ToInt32(str)); //根据省份ID得到城市集合  
  70. foreach (City c in list)  
  71. {  
  72. strCi.Append("<option value=/"");  
  73. strCi.Append(c.CityId);  
  74. strCi.Append("/">");  
  75. strCi.Append(c.CityName);  
  76. strCi.Append("</option>");  
  77. }  
  78. }  
  79. return strCity = strCi.ToString();  
  80. }  
  81. #endregion  
  82. }  

要注意的地方我都有注释,

当然前台调入后台方法远不止这一种,比如还有AJAXPRO也很好用

以上所述就是本文的全部内容了,希望大家能够喜欢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表