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

前台用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也很好用

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

(0)

相关推荐

  • AJAX 二级级联菜单实现代码

    客户端代码: 复制代码 代码如下: <!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> <meta http-eq

  • ajax级联菜单实现方法实例分析

    本文实例讲述了ajax级联菜单实现方法.分享给大家供大家参考,具体如下: 效果如下: 选择第一项,第二项.第三项的内容跟着改变. 选择第二项,第三项的内容跟着改变. 第三项则不影响第一项和第二项. 有几点值得提: 1.html到底是前台拼接还是后台拼接. 我选择的是前台拼接,这样可以节省流量,和后台的资源.这也比较符合程序处理,一般后台只负责提供数据. 通过json传递给前台,完了前台获取进行处理. ajax函数 function ajaxgetbigclass(val){ $.ajax({ t

  • 基于asp+ajax和数据库驱动的二级联动菜单

    index.asp 页面代码 复制代码 代码如下: <!--#include file="conn.asp" --> <% set cmd = conn.execute("select bigclassid,bigclassname from bigclass") tempid=cmd("bigclassid") %> <select name="menu" onChange="gets

  • 前台JS(jquery ajax)调用后台方法实现无刷新级联菜单示例

    前台用AJAX直接调用后台方法,老有人发帖提问,没事做个示例 CasMenu.aspx页面: 复制代码 代码如下: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="CasMenu.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Tr

  • Javascript级联下拉菜单以及AJAX数据验证核心代码

    虽然也使用了Prototype.js来编写,但是由于对它的不了解,类的实现仍然是使用了<JavaScript高级程序设计>里的方法.使用AJAX进行数据验证时,最初使用的是XML来当数据源,然而在使用了一段时间后,发现XML效率太低,于是又使用JSON来做为数据源. 一年过去了,客户又提出了新的需求,最初是只要输入框的两个数据相符就行,现在的要求是两个下拉菜单的数据也要相符,于是,我利用此机会,将代码重构了一次. 需求: 1.根据下拉菜单产品名称.产品包装的选择,右面的图片要进行相应的变化.

  • Ajax+Json 级联菜单实现代码

    第一个下拉框: 复制代码 代码如下: <select id="select" name="rawfoodBasic.category" onchange="doChange(this.value);"> //第一个下拉框里的值 </select> 第二个下拉框: 复制代码 代码如下: <select id="subSelect" name="rawfoodBasic.absorb&quo

  • 利用了jquery的ajax实现二级联互动菜单

    菜单资源保存在数据库中.利用了jquery的ajax实现.用到的包有:json-lib-2.2.3-jdk15.jar ezmorph-1.0.6.jar json.js jquery.js jsp页面的代码: 复制代码 代码如下: <%@ page contentType="text/html; charset=gbk"%> <%@ taglib prefix="s" uri="/struts-tags"%> <s

  • ajax读取数据库内容实现二级联动下拉选择菜单示例

    复制代码 代码如下: <PRE class=javascript name="code"></PRE><PRE class=javascript name="code">---------------------这是ajax(javascript)代码---------------------------</PRE><PRE class=javascript name="code">&l

  • Ajax级联菜单实例代码

    1.Ajax.html 复制代码 代码如下: <!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>    <title

  • 一个强健 实用的asp+ajax二级联动菜单(有演示和附源程序打包下载)

    一个强健 实用的ajax二级联动菜单(有演示和附源程序打包下载) 前些天在搞后台的时候要用到二级联动的菜单,到网上去找了半天也没找到满意的,不是这错就是那错,在选择的时候有时候不能返回.真是郁闷.     后来就看到有人用ajax写了无限级分类(牛,呵呵,本人看不懂.).就想到我那个后台不也可以用ajax试试,虽然比用javascript的慢点,但我这个实用.强健..不会出错,也不会选择某个大类后再返回无选择状态小类为空的状态.呵呵.文件目录:如图 主要代码如下:index.asp 复制代码 代

  • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单

    首先是数据库的设计.分类表叫cate. 我做的是分类数据的二级联动,数据需要的字段有:id,name(中文名),pid(父id). 父id的设置: 若数据没有上一级,则父id为0,若有上级,则父id为上一级的id. 数据库有内容后,就可以开始写代码,进行二级联动的实现. 先在后台php获取所有pid为0的数据,保存到$cate中,然后在第一层的<select>中用foreach循环输出. Html代码: 复制代码 代码如下: <select name="type" s

  • AJAX实现web页面中级联菜单的设计

    看了大峡搞的级联菜单,我也班门弄斧一把,嘿嘿,花了一点时间搞了个级联菜单贴上来看看.本例中只要你选择成员分类名称就会自动显示成员名称:     首先在eclipse中建一个项目,名称你自己做主了,这里为Easyjf-menu,对应的浏览器页面代码为:  Easyjf-menu.jsp  <@page contentType="text/html;charser=UTF-8" language="java"%>  <head>    --..

随机推荐