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 相关文章推荐
浅谈JavaScript中面向对象技术的模拟
Sep 25 Javascript
js不完美解决click和dblclick事件冲突问题
Jul 16 Javascript
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
Aug 22 Javascript
解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
Dec 10 Javascript
JQuery中Ajax()的data参数类型实例分析
Dec 15 Javascript
ES5学习教程之Array对象
Apr 01 Javascript
基于ajax和jsonp的原生封装(实例)
Oct 16 Javascript
JS实现的找零张数最小问题示例
Nov 28 Javascript
jQuery实现手机号正则验证输入及自动填充空格功能
Jan 02 jQuery
以v-model与promise两种方式实现vue弹窗组件
May 21 Javascript
微信小程序实现点击按钮后修改颜色
Dec 05 Javascript
微信小程序文章列表功能完整实例
Jun 03 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
淘宝ip地址查询类分享(利用淘宝ip库)
2014/01/07 PHP
php环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
php数组保存文本与文本反编成数组实例
2014/11/13 PHP
Apache站点配置SSL强制跳转443
2021/03/09 Servers
JavaScript 在各个浏览器中执行的耐性
2009/04/06 Javascript
js中function()使用方法
2013/12/24 Javascript
教你用jquery实现iframe自适应高度
2014/06/11 Javascript
jQuery CSS()方法改变现有的CSS样式
2014/08/20 Javascript
javascript 动态创建表格的2种方法总结
2015/03/04 Javascript
每天一篇javascript学习小结(基础知识)
2015/11/10 Javascript
Jquery promise实现一张一张加载图片
2015/11/13 Javascript
javascript实现九宫格相加数值相等
2020/05/28 Javascript
js手动播放图片实现图片轮播效果
2016/09/17 Javascript
Javascript的动态增加类的实现方法
2016/10/20 Javascript
vue-dialog的弹出层组件
2020/05/25 Javascript
用ES6写全屏滚动插件的示例代码
2018/05/02 Javascript
jQuery判断自定义属性data-val用法示例
2019/01/07 jQuery
Python批量转换文件编码格式
2015/05/17 Python
Python使用getpass库读取密码的示例
2017/10/10 Python
django Serializer序列化使用方法详解
2018/10/16 Python
python3.6.3转化为win-exe文件发布的方法
2018/10/31 Python
Python高斯消除矩阵
2019/01/02 Python
Pyinstaller加密打包应用的示例代码
2020/06/11 Python
python获取百度热榜链接的实例方法
2020/08/25 Python
澳大利亚拥有最好的家具和家居用品在线目的地:Nestz
2019/02/23 全球购物
《猴子种果树》教学反思
2014/04/26 职场文书
公司承诺书范文
2014/05/19 职场文书
大学生应聘导游自荐信
2014/06/02 职场文书
团干部培训方案
2014/06/03 职场文书
经典团队口号大全
2014/06/21 职场文书
六一文艺汇演开幕词
2015/01/29 职场文书
三孔导游词
2015/02/05 职场文书
2015年领班工作总结
2015/04/29 职场文书
2016暑期师德培训心得体会
2016/01/09 职场文书
浅谈Python类的单继承相关知识
2021/05/12 Python
SpringBoot 集成Redis 过程
2021/06/02 Redis