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


Posted in Javascript onMay 21, 2015

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

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

CasMenu.aspx页面:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CasMenu.aspx.cs" Inherits="_Default" %> 
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
  <title>Porschev--前台JS(Jquery)调用后台方法 级联菜单</title> 
  <script src="js/jquery-1.3.2-vsdoc.js" mce_src="js/jquery-1.3.2-vsdoc.js" type="text/javascript"></mce:script> 
  <script type="text/javascript"> 
    $(function() {       
      $("#selPro").change(function() {  //省份下拉菜单的change事件         
        var params = '{str:"' + $(this).val() + '"}'; //此处参数名要注意和后台方法参数名要一致                 
        $.ajax({           
          type: "POST",          //提交方式           
          url: "CasMenu.aspx/ShowCity",  //提交的页面/方法名           
          data: params,          //参数(如果没有参数:null)           
          dataType: "text",        //类型           
          contentType: "application/json; charset=utf-8",           
          beforeSend: function(XMLHttpRequest) {             
            $('#tipsDiv').text("正在查询...");           
          },           
          success: function(msg) {                         
            $('#tipsDiv').text("查询成功!");             
            $("#selCity option").each(function() {               
              $(this).remove();  //移除原有项             
            });             
            $("<option value='0'>===请选择===</option>").appendTo("#selCity");  //添加一个默认项             
            $(eval("(" + msg + ")").d).appendTo("#selCity");    //将返回来的项添加到下拉菜单中           
          },           
          error: function(xhr, msg, e) {             
            alert("error");           
          }         
         });       
      });     
    });   
    </script> 
</head> 
<body> 
  <form id="form1" runat="server"> 
  <div> 
    Porschev--前台JS(Jquery)调用后台方法 级联菜单<br /> 
    <br /> 
    <select id="selPro" name="selPro"> 
      <%=strPro %> 
    </select>省(直辖市) 
    <select id="selCity" name="selCity"> 
      <option value="0">===请选择===</option> 
    </select>(市) 
  </div> 
  <div id="tipsDiv"> 
  </div> 
  </form> 
</body> 
</html>

CasMenu.aspx.cs

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 
using CasMenuModels; 
using CasMenuBLL; 
using System.Text; 
public partial class _Default : System.Web.UI.Page  
{   
  public static string strPro = string.Empty; //省份下拉项   
  public static string strCity = string.Empty; //城市下拉项   
  protected void Page_Load(object sender, EventArgs e)   
  {     
    if (!IsPostBack)     
    {          
    }     
    ShowPro();   
  }   
   
  #region##省份下拉列表框   
  /// <summary>   
  /// 省份下拉列表框   
  /// </summary>   
  /// <returns></returns>   
  public string ShowPro()   
  {     
    StringBuilder str = new StringBuilder();    //得到所有省份集合     
    List<CasMenuModels.Province> list = new CasMenuBLL.ProvinceManager().GetAllProvince();            //添加一个初始项     
    str.Append("<option value=\"");     
    str.Append("0");     
    str.Append("\">");     
    str.Append("===请选择===");     
    str.Append("</option>");         
     
    //循环追加省份下拉项         
    foreach (CasMenuModels.Province p in list)     
    {       
      str.Append("<option value=\"");       
      str.Append(p.ProvinceId);       
      str.Append("\">");       
      str.Append(p.ProvinceName);       
      str.Append("</option>");           
    }     
    return strPro = str.ToString();   
  }   
   
  #endregion  #region##城市下拉列表框   
  /// <summary>   
  /// 城市下拉列表框   
  /// </summary>   
  /// <param name="str">省份ID</param>   
  /// <returns></returns>   
  [System.Web.Services.WebMethod()]   
  public static string ShowCity(string str)  //方法是静态的   
  {     
    StringBuilder strCi = new StringBuilder();     
    if (str == "0")   //为初始项     
    {       
      strCi.Append("<option value=\"");       
      strCi.Append("请选择");       
      strCi.Append("\">");       
      strCi.Append("请选择");       
      strCi.Append("</option>");     
    }     
    else     
    {       
      List<CasMenuModels.City> list = new CasMenuBLL.CityManager().GetAllByProId(Convert.ToInt32(str));  //根据省份ID得到城市集合       
      foreach (City c in list)       
      {         
        strCi.Append("<option value=\"");         
        strCi.Append(c.CityId);         
        strCi.Append("\">");         
        strCi.Append(c.CityName);         
        strCi.Append("</option>");               
      }     
    }     
    return strCity = strCi.ToString();   
  }   
  #endregion   
}

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

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

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

Javascript 相关文章推荐
JQuery扩展插件Validate 3通过参数设置错误信息
Sep 05 Javascript
jQuery防止click双击多次提交及传递动态函数或多参数
Apr 02 Javascript
深入理解JavaScript系列(39):设计模式之适配器模式详解
Mar 04 Javascript
使用BootStrapValidator完成前端输入验证
Sep 28 Javascript
NODE.JS跨域问题的完美解决方案
Oct 20 Javascript
常用jQuery选择器汇总
Feb 02 Javascript
thinkjs 文件上传功能实例代码
Nov 08 Javascript
JavaScript面向对象程序设计中对象的定义和继承详解
Jul 29 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
Jul 13 Javascript
解决Vue项目中tff报错的问题
Oct 21 Javascript
JS如何监听div的resize事件详解
Dec 03 Javascript
angular *Ngif else用法详解
Dec 15 Javascript
jQuery插件expander实现图片翻转特效
May 21 #Javascript
简单分析javascript面向对象与原型
May 21 #Javascript
jQuery获取上传文件的名称的正则表达式
May 21 #Javascript
js兼容火狐获取图片宽和高的方法
May 21 #Javascript
js兼容火狐显示上传图片预览效果的方法
May 21 #Javascript
javascript去除空格方法小结
May 21 #Javascript
删除javascript所创建子节点的方法
May 21 #Javascript
You might like
PHP 5.0对象模型深度探索之绑定
2006/09/05 PHP
PHP使用Redis长连接的方法详解
2018/02/12 PHP
PHP输出Excel PHPExcel的方法
2018/07/26 PHP
phpstudy隐藏index.php的方法
2020/09/21 PHP
js判断一个元素是否为另一个元素的子元素的代码
2012/03/21 Javascript
js 针对html DOM元素操作等经验累积
2014/03/11 Javascript
AspNet中使用JQuery boxy插件的确认框
2015/05/20 Javascript
jQuery 1.9.1源码分析系列(十)事件系统之绑定事件
2015/11/19 Javascript
node.js使用cluster实现多进程
2016/03/17 Javascript
jQuery动态生成Bootstrap表格
2016/11/01 Javascript
AngularJS中transclude用法详解
2016/11/03 Javascript
Vue开发过程中遇到的疑惑知识点总结
2017/01/20 Javascript
tab栏切换原理
2017/03/22 Javascript
Angular获取手机验证码实现移动端登录注册功能
2017/05/17 Javascript
JavaScript比较同一天的时间大小实例代码
2018/02/09 Javascript
使用vue2实现购物车和地址选配功能
2018/03/29 Javascript
JavaScript变量提升和严格模式实例分析
2019/01/27 Javascript
vue实现前端列表多条件筛选
2020/10/26 Javascript
跨平台python异步回调机制实现和使用方法
2013/11/26 Python
Windows下搭建python开发环境详细步骤
2020/07/20 Python
Python基于列表list实现的CRUD操作功能示例
2018/01/05 Python
python中的闭包函数
2018/02/09 Python
python交换两个变量的值方法
2019/01/12 Python
Django Sitemap 站点地图的实现方法
2019/04/29 Python
python随机数分布random均匀分布实例
2019/11/27 Python
解决python gdal投影坐标系转换的问题
2020/01/17 Python
Python txt文件常用读写操作代码实例
2020/08/03 Python
Python引入多个模块及包的概念过程解析
2020/09/21 Python
中国专业的综合网上购物商城:京东
2016/08/02 全球购物
VLAN和VPN有什么区别?分别实现在OSI的第几层?
2014/12/23 面试题
《守株待兔》教学反思
2014/03/01 职场文书
2014年安全生产目标责任书
2014/07/23 职场文书
审计班子对照检查材料
2014/08/27 职场文书
pandas取dataframe特定行列的实现方法
2021/05/24 Python
Python中的np.argmin()和np.argmax()函数用法
2021/06/02 Python
工厂无线对讲系统解决方案
2022/02/18 无线电