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的ajax功能实现web service的json转化
Aug 29 Javascript
JS定时关闭窗口的实例
May 22 Javascript
Bootstrap入门书籍之(五)导航条、分页导航
Feb 17 Javascript
网络传输协议(http协议)
Nov 18 Javascript
纯原生js实现table表格的增删
Jan 05 Javascript
浅谈angular2路由预加载策略
Oct 04 Javascript
基于Vue2的独立构建与运行时构建的差别(详解)
Dec 06 Javascript
angularjs1.5 组件内用函数向外传值的实例
Sep 30 Javascript
如何利用ES6进行Promise封装总结
Feb 11 Javascript
JS/jQuery实现简单的开关灯效果【案例】
Feb 19 jQuery
vue以组件或者插件的形式实现throttle或者debounce
May 22 Javascript
vue框架制作购物车小球动画效果实例代码
Sep 26 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 连接mysql连接被重置的解决方法
2011/02/15 PHP
PHP中将数组转成XML格式的实现代码
2011/08/08 PHP
php导出csv数据在浏览器中输出提供下载或保存到文件的示例
2014/04/24 PHP
PHP实现的购物车类实例
2015/06/17 PHP
PHP传值到不同页面的三种常见方式及php和html之间传值问题
2015/11/19 PHP
PHP-X系列教程之内置函数的使用示例
2017/10/16 PHP
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
2011/09/20 Javascript
THREE.JS入门教程(2)着色器-上
2013/01/24 Javascript
js控制web打印(局部打印)方法整理
2013/05/29 Javascript
innerHTML动态添加html代码和脚本兼容多个浏览器
2014/10/11 Javascript
jQuery实现平滑滚动的标签分栏切换效果
2015/08/28 Javascript
js动态生成Html元素实现Post操作(createElement)
2015/09/14 Javascript
jQuery Uploadify 上传插件出现Http Error 302 错误的解决办法
2015/12/12 Javascript
基于JavaScript代码实现微信扫一扫下载APP
2015/12/30 Javascript
详解在Vue中通过自定义指令获取dom元素
2017/03/04 Javascript
Easyui在treegrid添加控件的实现方法
2017/06/23 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
2019/09/21 Javascript
js实现3D旋转效果
2020/08/18 Javascript
理解JavaScript中的Proxy 与 Reflection API
2020/09/21 Javascript
[01:09]DOTA2次级职业联赛 - 99战队宣传片
2014/12/01 DOTA
Python3搜索及替换文件中文本的方法
2015/05/22 Python
python实现诗歌游戏(类继承)
2019/02/26 Python
python之PyQt按钮右键菜单功能的实现代码
2019/08/17 Python
Python使用selenium + headless chrome获取网页内容的方法示例
2019/10/16 Python
Python爬虫爬取糗事百科段子实例分享
2020/07/31 Python
美国环保婴儿用品公司:The Honest Company
2017/11/23 全球购物
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
2013/02/17 面试题
工作自荐信
2013/12/11 职场文书
美化环境标语
2014/06/20 职场文书
2015年办税服务厅工作总结
2015/07/23 职场文书
2016大学生暑期三下乡心得体会
2016/01/23 职场文书
美甲店的创业计划书模板
2019/08/23 职场文书
公司财务制度:成本管理控制制度模板
2019/11/19 职场文书
victoriaMetrics库布隆过滤器初始化及使用详解
2022/04/05 Golang
JavaScript parseInt0.0000005打印5原理解析
2022/07/23 Javascript
SQLyog的下载、安装、破解、配置教程(MySQL可视化工具安装)
2022/09/23 MySQL