各位大侠asp.net中js如何调用后台带参数没返回值的方法来的。

时间:2021-08-08 00:36:44
后台代码:
        //方法
        protected void CityBind(string provinceID)
        {
            List<ListItem> cityList = BLL.TypeEnum.AreaTypeAction.GetList();
            List<string> sList = new List<string>();
            foreach (ListItem cityType in cityList)
            {
                if (cityType.Value.IndexOf(","+provinceID+",")>=0)
                {
                    sList.Add(cityType.Value);
                }
            }
            StringBuilder html_cityType = new StringBuilder();
            if (sList.Count > 0)
            {
                for (int i = 0; i < sList.Count; i++)
                {
                    html_cityType.AppendFormat("<li id=\"{0}\">{1}</li>", sList[i], BLL.TypeEnum.CityTypeAction.GetNameByValue(sList[i]));

                }
            }
            lit_city.Text = html_cityType.ToString();
        } 
//前台JS
<script language="javascript">
    $(function () {
        $("#pro_div ul li").click(function (event) {
            var id = $(this).attr("ID");
            //<%=CityBind(id) %>;  如何在这里调用后台的方法,上面得到的id做为参数传过去        });
    });
</script>

15 个解决方案

#1


不可以直接这样调用,创建xmlhttprequest请求,或使用ajax控件吧
baidu一下。。。

#2


这样不能使用,建议使用ajax操作一般处理程序来弄一些简单的过程

#3


有没具体的方法来的,在网上百度了但是说的不是很清楚。

#4


本帖最后由 net_lover 于 2012-05-19 09:48:36 编辑
$.get("xx.aspx?do=CityBind&id=" + id );


xx.aspx里面
Page_Load
if(Request.QueryString["do"] == "CityBind")
CityBind(Request.QueryString["id"])

#5


LS上的不行哦。

#6


怎么不行啊
你怎么测试的

#7


本帖最后由 net_lover 于 2012-05-19 10:19:14 编辑
给你个完整的测试代码,直接存储xxx.aspx直接运行就能看效果了

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
  protected void CityBind(string provinceID)
  {
    System.IO.File.WriteAllText(Server.MapPath("~/Test" + provinceID + ".txt"), provinceID);
  }
  protected void Page_Load(object sender, EventArgs e)
  {    
    if (Request.QueryString["do"]!=null && Request.QueryString["do"] == "CityBind")
      CityBind(Request.QueryString["id"]);
  }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
  <script type="text/javascript" src="jquery-1.6.4.min.js"></script>
</head>
<body>
  <form id="form1" runat="server">
  <div id="pro_div">
    <ul>
      <li ID="A">AA</li>
      <li ID="B">BB</li>
    </ul>
  </div>
  </form>
  <script language="javascript">
    $(document).ready(function () {
      $("#pro_div ul li").click(function (event) {
        var id = $(this).attr("ID");
        $.get("<%= Request.FilePath%>?do=CityBind&id=" + id + "&nocache=" + (new Date()).valueOf());
      });
    });
  </script>
</body>
</html>



注意防止缓存的nocache参数

#8


本帖最后由 net_lover 于 2012-05-19 10:22:47 编辑
或者直接
<script language="javascript">
  $(document).ready(function () {
    $("#pro_div ul li").click(function (event) {
      var id = $(this).attr("ID");
      $.ajax({
        url: "<%= Request.FilePath%>?do=CityBind&id=" + id,
        cache: false
      });
    });
  });
</script>

测试效果,到根目录下看生成了
TestA.txt
TestB.txt
文件

#9


 这里alert一直弹出object,而不是后台返回给他的值,什么原因。
 $(function () {
        $("#pro_div ul li").click(function (event) {
            var id = $(this).attr("ID");
            $.ajax({ type: "POST",
                url: "index.aspx/CityBind",
                data: "{'provinceID':"+id+"}",
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    alert(data.toString());
                }
            });
        });
   });
 后台代码
[WebMethod]
        public static string CityBind(string provinceID)
        {
            List<ListItem> cityList = BLL.TypeEnum.CityTypeAction.GetList();
            List<string> sList = new List<string>();
            foreach (ListItem cityType in cityList)
            {
                if (cityType.Value.IndexOf(provinceID)==0)
                {
                    sList.Add(cityType.Value);
                }
            }
            StringBuilder html_cityType = new StringBuilder();
            if (sList.Count > 0)
            {
                for (int i = 0; i < sList.Count; i++)
                {
                    html_cityType.AppendFormat("<li id=\"{0}\">{1}</li>", sList[i], BLL.TypeEnum.CityTypeAction.GetNameByValue(sList[i]));

                }
            }
            return html_cityType.ToString();
        } 

#10


按你上面说你的那个,是可以调用到CityBind方法了,在CityBind方法里面也给lit_city.Text= html_cityType.ToString();赋值了,但是为什么前台    <ul><asp:Literal ID="lit_city" runat="server"></asp:Literal></ul>中lit_city没值呢?

#11


引用 3 楼  的回复:
有没具体的方法来的,在网上百度了但是说的不是很清楚。


百度很烂。建议使用谷歌。

#12


你要搞清楚问题

你的问题
后台代码:
  //方法
  protected void CityBind(string provinceID)

里面不是WebService方法

你下面怎么写成
[WebMethod]
  public static string CityBind(string provinceID)

这是完全不同的
问问题要搞清楚,自己不懂就把自己说清楚。

#13


本帖最后由 net_lover 于 2012-05-19 17:39:49 编辑
jquery调用WebMethod的方法
http://dotnet.aspx.cc/file/Return-DataSet-DataTable-Using-jQuery-Ajax-WebMethod.aspx

#14


给你2种方法的源代码,直接拷贝粘贴就能运行,说的很清楚了

#15


webservice 返回void

#1


不可以直接这样调用,创建xmlhttprequest请求,或使用ajax控件吧
baidu一下。。。

#2


这样不能使用,建议使用ajax操作一般处理程序来弄一些简单的过程

#3


有没具体的方法来的,在网上百度了但是说的不是很清楚。

#4


本帖最后由 net_lover 于 2012-05-19 09:48:36 编辑
$.get("xx.aspx?do=CityBind&id=" + id );


xx.aspx里面
Page_Load
if(Request.QueryString["do"] == "CityBind")
CityBind(Request.QueryString["id"])

#5


LS上的不行哦。

#6


怎么不行啊
你怎么测试的

#7


本帖最后由 net_lover 于 2012-05-19 10:19:14 编辑
给你个完整的测试代码,直接存储xxx.aspx直接运行就能看效果了

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
  protected void CityBind(string provinceID)
  {
    System.IO.File.WriteAllText(Server.MapPath("~/Test" + provinceID + ".txt"), provinceID);
  }
  protected void Page_Load(object sender, EventArgs e)
  {    
    if (Request.QueryString["do"]!=null && Request.QueryString["do"] == "CityBind")
      CityBind(Request.QueryString["id"]);
  }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="Head1" runat="server">
  <script type="text/javascript" src="jquery-1.6.4.min.js"></script>
</head>
<body>
  <form id="form1" runat="server">
  <div id="pro_div">
    <ul>
      <li ID="A">AA</li>
      <li ID="B">BB</li>
    </ul>
  </div>
  </form>
  <script language="javascript">
    $(document).ready(function () {
      $("#pro_div ul li").click(function (event) {
        var id = $(this).attr("ID");
        $.get("<%= Request.FilePath%>?do=CityBind&id=" + id + "&nocache=" + (new Date()).valueOf());
      });
    });
  </script>
</body>
</html>



注意防止缓存的nocache参数

#8


本帖最后由 net_lover 于 2012-05-19 10:22:47 编辑
或者直接
<script language="javascript">
  $(document).ready(function () {
    $("#pro_div ul li").click(function (event) {
      var id = $(this).attr("ID");
      $.ajax({
        url: "<%= Request.FilePath%>?do=CityBind&id=" + id,
        cache: false
      });
    });
  });
</script>

测试效果,到根目录下看生成了
TestA.txt
TestB.txt
文件

#9


 这里alert一直弹出object,而不是后台返回给他的值,什么原因。
 $(function () {
        $("#pro_div ul li").click(function (event) {
            var id = $(this).attr("ID");
            $.ajax({ type: "POST",
                url: "index.aspx/CityBind",
                data: "{'provinceID':"+id+"}",
                contentType: "application/json; charset=utf-8",
                success: function (data) {
                    alert(data.toString());
                }
            });
        });
   });
 后台代码
[WebMethod]
        public static string CityBind(string provinceID)
        {
            List<ListItem> cityList = BLL.TypeEnum.CityTypeAction.GetList();
            List<string> sList = new List<string>();
            foreach (ListItem cityType in cityList)
            {
                if (cityType.Value.IndexOf(provinceID)==0)
                {
                    sList.Add(cityType.Value);
                }
            }
            StringBuilder html_cityType = new StringBuilder();
            if (sList.Count > 0)
            {
                for (int i = 0; i < sList.Count; i++)
                {
                    html_cityType.AppendFormat("<li id=\"{0}\">{1}</li>", sList[i], BLL.TypeEnum.CityTypeAction.GetNameByValue(sList[i]));

                }
            }
            return html_cityType.ToString();
        } 

#10


按你上面说你的那个,是可以调用到CityBind方法了,在CityBind方法里面也给lit_city.Text= html_cityType.ToString();赋值了,但是为什么前台    <ul><asp:Literal ID="lit_city" runat="server"></asp:Literal></ul>中lit_city没值呢?

#11


引用 3 楼  的回复:
有没具体的方法来的,在网上百度了但是说的不是很清楚。


百度很烂。建议使用谷歌。

#12


你要搞清楚问题

你的问题
后台代码:
  //方法
  protected void CityBind(string provinceID)

里面不是WebService方法

你下面怎么写成
[WebMethod]
  public static string CityBind(string provinceID)

这是完全不同的
问问题要搞清楚,自己不懂就把自己说清楚。

#13


本帖最后由 net_lover 于 2012-05-19 17:39:49 编辑
jquery调用WebMethod的方法
http://dotnet.aspx.cc/file/Return-DataSet-DataTable-Using-jQuery-Ajax-WebMethod.aspx

#14


给你2种方法的源代码,直接拷贝粘贴就能运行,说的很清楚了

#15


webservice 返回void