您好,欢迎访问一九零五行业门户网

JavaScript调用ASP.NET服务器端方法的最简单的方法

对于这样的问题,有很多解决方法,如果你返回的内容是简单的内容,如注册用户时候的验证信息,只需返回存在与否,那么可以采用下面最最简单的代码实现:
c# 代码
<%@ 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">
  //测试方法1
  public string getsimplemethod(string inputdata)
  {
    //业务处理。
    return 你输入的值: + inputdata;
  }
  protected void page_load(object sender, eventargs e)
  {
    if (request.querystring[input] != null)
    {
      response.clearcontent();
      response.write(getsimplemethod(request.querystring[input]));
      response.end();
    }
  }
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="head1" runat="server">
  <title></title>
  <script type="text/javascript">
    var textbox1 = <%=textbox1.clientid %>;
    function getdata() {
      var t = document.getelementbyid(textbox1);
      var h = window.xmlhttprequest ? new xmlhttprequest() : new activexobject(msxml2.xmlhttp);
      h.open(get, <%=request.filepath %>?input= + encodeuricomponent(t.value) + & + date.parse(new date()), true);
      h.setrequestheader(connection, close);
      h.onreadystatechange = function() {
        if (h.readystate == 4) {
          if (h.status == 200) {
            document.getelementbyid(info).innerhtml = h.responsetext;
          }
        }
      }
      h.send(null);
    }    
  </script>
</head>
<body>
  <form id="form1" runat="server">
  <asp:textbox id="textbox1" runat="server"></asp:textbox>
  <asp:button id="button1" runat="server" text="调用服务器方法 getsimplemethod" onclientclick="getdata();return false;" />
  <div id="info"></div>
  </form>
</body>
</html>
对于需要返回复杂的对象,则需要对对象进行序列化等的处理,可以采取下面的简单方法。使用这个方法需要注意以下3点:
1,后台方法必须标记为 [system.web.services.webmethod] 属性;
2,后台方法必须是 static 类型的静态方法;
3,scriptmanager 必须设置 enablepagemethods=true。
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">
  //测试方法1
  [system.web.services.webmethod]
  public static string getsimplemethod(string inputdata)
  {
    return 你输入的值: + inputdata;
  }
  //测试方法2
  [system.web.services.webmethod]
  public static system.collections.generic.list<bloguser> getlistobjectmethod(int inputdata)
  {
    system.collections.generic.list<bloguser> ulist = new system.collections.generic.list<bloguser>();
    system.random r = new random();
    for (int i = 0; i < 6; i++)
    {
      bloguser u = new bloguser();
      u.username = 孟宪会 + inputdata.tostring();
      u.score = r.next(0, 100);
      ulist.add(u);
    }
    return ulist;
  }
  //用于返回的测试类。
  public class bloguser
  {
    public string username { set; get; }
    public int32 score { set; get; }
  } 
</script>
<html xmlns="http://www.w3.org/1999/xhtml">
<head id="head1" runat="server">
  <title></title>
  <script type="text/javascript">
    var textbox1 = <%=textbox1.clientid %>;
    function getdata1() {
      pagemethods.getsimplemethod(document.getelementbyid(textbox1).value, onsucceeded1, onfailed);
    }
    function getdata2() {
      pagemethods.getlistobjectmethod(document.getelementbyid(textbox1).value, onsucceeded2, onfailed);
    }
    function onsucceeded1(result, usercontext, methodname) {
      alert(result)
    }
    function onsucceeded2(result, usercontext, methodname) {
      alert(result)
      var html = <table border=1>;
      for (var i = 0; i < result.length; i++) {
html += "<tr>;
        html += <td> + result[i].username + </td><td> + result[i].score + </td>;
        html += </tr>;
      }
      html += </table>;
      document.getelementbyid(info).innerhtml = html;
    }
    function onfailed(error, usercontext, methodname) {
      if (error !== null) {
        alert(调用方法错误: + error.get_message());
      }
    }
  </script>
</head>
<body>
  <form id="form1" runat="server">
  <asp:scriptmanager id="scriptmanager1" runat="server" enablepagemethods="true" />
  <asp:textbox id="textbox1" runat="server"></asp:textbox>
  <asp:button id="button1" runat="server" text="调用服务器方法 getsimplemethod" onclientclick="getdata1();return false;" />
  <asp:button id="button2" runat="server" text="调用服务器方法 getlistobjectmethod" onclientclick="getdata2();return false;" />
  <div id="info"></div>
  </form>
</body>
</html>
其它类似信息

推荐信息