`

Asp.net前台调后台方法

阅读更多

 这个当然不用说大家都知道的一种就是ajax调后台的方法。
1、有参数的方法调用
示例代码如下:
前台jQuery代码:
$(function() { 
 这个当然不用说大家都知道的一种就是ajax调后台的方法。
1、有参数的方法调用

示例代码如下:

前台jQuery代码:

$(function() {
  var browers = browersEstimate();
  var params = '{browersType:"' + browers + '"}';
  $.ajax({
      type: "POST",                   //提交方式
      url: "Default.aspx/RecordData",   //提交的页面/方法名
      data: params,                   //参数(如果没有参数:null)
      dataType: "json",                   //类型
      contentType: "application/json; charset=utf-8",     
      success: function(data) {     
              //返回的数据用data.d获取内容     
                alert(data.d);     
          },     
          error: function(err) {     
              alert(err);     
         });   
     });

这个是jquery下Ajax方法调用后台方法。

这个方法有几点需要说明:

type方式必须是post,再有就是后台的方法必须是静态的,方法声明要加上特性[System.Web.Services.WebMethod()],传递的参数个数也应该和方法的参数相同。

asp.net后台方法:

   [System.Web.Services.WebMethod()]
    public static void RecordData(string browersType)
    {
        if (BrowserControl.Counters == null)
        {
            BrowserControl.InitData(0);
        }

        if (browersType == "")
        {
            browersType = "Other";
        }

        BrowserControl.AddOneByBrowserType(browersType);
        if (BrowserControl.WriteInDataBase())
        {
            BrowserControl.OldTotalCount = BrowserControl.Counters.Count;
        }
        else
        {
            BrowserControl.OldTotalCount = 0;
        }
    }

2、无参数的方法调用

示例代码:

前台jQuery代码

$(function() {     
    $("#btnOK").click(function() {     
        $.ajax({     
            //要用post方式     
            type: "Post",     
            //方法所在页面和方法名     
            url: "data.aspx/SayHello",     
            contentType: "application/json; charset=utf-8",     
            dataType: "json",     
            success: function(data) {     
                //返回的数据用data.d获取内容     
                alert(data.d);     
            },     
            error: function(err) {     
                alert(err);     
            }     
        });     
        //禁用按钮的提交     
        return false;     
    });     
});

asp.net后台方法

[System.Web.Services.WebMethod()]
public static string SayHello()     
{     
return "Hello Ajax!";     
}

3、返回数组方法的调用

示例代码:

asp.net 后台代码:

[System.Web.Services.WebMethod()]   
public static List GetArray()     
{     
  List li = new List();     
for (int i = 0; i < 10; i++)     
        li.Add(i + "");     
return li;     
}

前台JQuery代码:

/**/     
$(function() {     
    $("#btnOK").click(function() {     
        $.ajax({     
            type: "Post",     
            url: "data.aspx/GetArray",     
            contentType: "application/json; charset=utf-8",     
            dataType: "json",     
            success: function(data) {     
                //插入前先清空ul     
                $("#list").html("");     
                //递归获取数据     
                $(data.d).each(function() {     
                    //插入结果到li里面     
                    $("#list").append("" + this + "");     
                });     
                alert(data.d);     
            },     
            error: function(err) {     
                alert(err);     
            }     
        });     
        //禁用按钮的提交     
        return false;     
    });     
});

4、返回Hashtable方法的调用

using System.Collections;     
[System.Web.Services.WebMethod()]    
public static Hashtable GetHash(string key,string value)     
{     
    Hashtable hs = new Hashtable();
    hs.Add("www", "yahooooooo");     
    hs.Add(key, value);          
    return hs;     
}

前台JQuery代码:

$(function() {     
    $("#btnOK").click(function() {     
        $.ajax({     
            type: "Post",     
            url: "data.aspx/GetHash",     
            //记得加双引号      
            data: "{ 'key': 'haha', 'value': '哈哈!' }",     
            contentType: "application/json; charset=utf-8",     
            dataType: "json",     
            success: function(data) {     
                alert("key: haha ==> "+data.d["haha"]+" key: www ==> "+data.d["www"]);     
            },     
            error: function(err) {     
                alert(err + "err");     
            }     
        });     
        //禁用按钮的提交     
        return false;     
    });     
});  

5、操作xml

xnl文件示例:   
 <?xml version="1.0" encoding="utf-8" ?>    
<data>    
  <item>    
    <id>1</id>    
    <name>qwe</name>    
  </item>    
  <item>    
    <id>2</id>    
    <name>asd</name>    
  </item>    
</data>    


Jquery代码:

$(function() {     
    $("#btnOK").click(function() {     
        $.ajax({     
            url: "XMLtest.xml",     
            dataType: 'xml', //返回的类型为XML ,和前面的Json,不一样了     
            success: function(xml) {     
                //清空list     
                $("#list").html("");     
                //查找xml元素     
                $(xml).find("data>item").each(function() {    

                    $("#list").append("id:" + $(this).find("id").text() +"");    

                    $("#list").append("Name:"+ $(this).find("name").text() + "");     
                })     
            },     
            error: function(result, status) { //如果没有上面的捕获出错会执行这里的回调函数     
                alert(status);     
            }     
        });     
        //禁用按钮的提交     
        return false;     
    });     
});

6、调后台的另外一种方法:

js代码示例:

    function test() {
        var browers = browersEstimate();
       __doPostBack("CE_RecordData", browers);
   }

后台页面代码示例:

protected override void OnLoad(EventArgs e)
    {
        base.OnLoad(e);
        if (this.IsPostBack)
        {
            if ((Request.Form["__EVENTTARGET"] != null) && (Request.Form["__EVENTTARGET"] != ""))
            {
                if (Request.Form["__EVENTTARGET"].Substring(0, 3) == "CE_")
                {
                    String strEventArgument = Request.Form["__EVENTARGUMENT"];
                    Type type = this.GetType();
                    MethodInfo mi = type.GetMethod(Request.Form["__EVENTTARGET"], BindingFlags.Instance | BindingFlags.NonPublic);
                    if (mi != null)
                    {
                        mi.Invoke(this, new object[] { strEventArgument });
                    }
                }
            }
        }
    }

    protected void CE_RecordData(string browersType)
    {   -----你需要做的操作----- }

如上代码解释:主要是js代码里面的方法名要与后台一致,方法参数个数也要一致,最重要的是页面的OnLoad事件的重写。在这里面调用的父类的OnLoad事件,重要是利用反射获取要调用的方法,和传递过来的参数。

type.GetMethod(Request.Form["__EVENTTARGET"], BindingFlags.Instance | BindingFlags.NonPublic);这一句里面的参数设置不能变更。必须是实例Instance和不公开的方法。可以看到对应的CE_RecordData方法是受保护的。
 

分享到:
评论
发表评论

文章已被作者锁定,不允许评论。

相关推荐

    asp.net前台调用后台方法传参数

    ### ASP.NET 前台调用后台方法传参数详解 #### 一、ASP.NET简介 ASP.NET 是一种用于构建动态Web应用程序的服务器端技术。它由Microsoft开发,并且是.NET框架的一部分。通过ASP.NET,开发者可以创建功能强大、交互...

    asp.net前台显示后台处理进度条

    本篇文章将详细讲解如何在ASP.NET中实现在前台显示后台处理进度条。 首先,我们需要理解ASP.NET的异步处理机制。在ASP.NET中,页面生命周期分为多个阶段,如初始化、加载、回发数据、验证、保存状态和卸载等。当...

    ASP.Net前台调用后台变量的方法

    在前台调用后台变量时,如果后台传递的数据为String类型,而前台需要其他类型的数据,可以使用DataBinder.Eval方法进行类型转换。例如使用DataBinder.Eval(Container.DataItem,"转换的类型")将Container.DataItem中...

    asp.net中后台c#数组与前台js数组交互

    ASP.NET中后台C#数组与前台JS数组交互 在ASP.NET中,后台C#数组与前台JS数组的交互是一个常见的问题。前台JS数组需要从后台C#数组中获取数据,而后台C#数组则需要从数据库中获取数据。下面我们将详细介绍如何实现这...

    ASP.NET中前台javascript与后台代码调用

    本文将深入探讨ASP.NET中前台JavaScript与后台代码调用的技术细节,包括IPostBackEventHandler接口的使用、ClientScript对象的功能以及如何通过__doPostBack函数实现前后端的通信。 ### ASP.NET中前后端通信的基础 ...

    .net前台调用后台方法和后台调用前台js.pdf

    .NET 前台调用后台方法以及后台调用前端JavaScript是Web开发中常见的交互方式,尤其是在ASP.NET框架中。以下是对这两种技术的详细说明: **一、前台调用后台方法** 1. **OnClientClick**:ASP.NET的控件属性,如...

    asp.net后台弹出层,asp.net后台调用前台JS事件

    这是一个用于as.net网页的弹出层对话框的实例,原本弹出提示可以使用alert&#40;'lcng'&#41;,但是由于不太友好,而且不太美观,后来才想自己做一个,当然了网上也有许多弹出对话框的jquery插件,不过平常使用的时候...

    ASP.NET完整实现查询前台、后台视频

    在"ASP.NET完整实现查询前台、后台视频"这个项目中,我们主要关注的是如何利用ASP.NET来处理前后台视频查询的功能,同时也涉及到HTML框架技术和动态加载人员菜单的技术。 首先,让我们深入了解ASP.NET的核心特性。...

    ASP.NET 图书的后台管理与前台服务

    在这个“ASP.NET 图书的后台管理与前台服务”项目中,主要涉及到了几个关键的技术点: 1. **数据库管理**: - 数据库是存储图书信息的核心,通常会使用如SQL Server或MySQL等关系型数据库。在这个系统中,可能包含...

    .net前台调用后台方法和后台调用前台js.docx

    ### 一、前端调用后台方法 1. **`OnClientClick`**: 在ASP.NET中,`OnClientClick`属性用于指定按钮等控件被点击时执行的JavaScript函数。例如: ```html &lt;asp:Button ID="Button1" runat="server" Text=...

    Asp.net新闻反馈前台+后台管理

    这个"新闻反馈前台+后台管理"项目是基于Asp.NET技术实现的一个完整系统,涵盖了用户交互的前端以及后台数据处理和管理功能。 在前端部分,"新闻反馈"模块通常包括展示最新新闻、用户提交反馈的表单以及对已有反馈的...

    Asp.net中JQuery、ajax调用后台方法总结

    Asp.net 中 jQuery、ajax 调用后台方法总结 在 Asp.net 中,使用 jQuery 和 Ajax 调用后台方法是一种常见的做法。下面总结了几种常见的调用方法。 有参数的方法调用 在前台使用 jQuery 代码调用后台方法时,需要...

    .net 前台调用后台函数的 Ajax 方法

    在.NET开发中,前端与后端的交互是常见的需求,特别是在构建动态网页时。...总的来说,通过AjaxPro,我们可以轻松地在.NET前台页面中调用后台方法,实现异步通信,提高应用程序的响应性和用户交互体验。

    基于asp.net的后台管理系统(Bootstrap)(源码+数据库).zip

    3. 提供单一后台支持多前台应用配置 4. 提供单点登录 5. 集成系统认证授权模块 6. 提供角色,部门,用户,菜单,前台应用程序授权 角色对用户授权 角色对菜单授权 角色对部门授权 角色对应用程序授权(多个前台...

    ASP.NET中前台javascript与后台代码调用.doc

    ### ASP.NET中前台javascript与后台代码调用 #### Session结束的时机 在ASP.NET应用程序中,Session状态管理是一项重要的功能,用于跟踪用户的会话状态。Session会在以下几种情况下结束: 1. **用户长时间未与...

    asp.net ajax异步获取数据...前台直接调用后台方法版..

    在标题和描述中提到的"前台直接调用后台方法",正是ASP.NET AJAX的核心特性之一,即通过AJAX调用在客户端实现对服务器端方法的调用,从而提高用户体验。 ASP.NET AJAX主要由两部分组成:客户端库(MicrosoftAjax.js...

    ASP.NET 前台javascript与后台代码调用

    ASP.NET中前台javascript与后台代码调用 1如何在JavaScript访问C#函数? 2.如何在JavaScript访问C#变量? 3.如何在C#中访问JavaScript的已有变量? 4.如何在C#中访问JavaScript函数? 问题1答案如下: javaScript函数中...

    ASP.NET后台框架

    ASP.NET后台框架是一种基于Microsoft .NET Framework的Web应用程序开发框架,用于构建强大的、高性能的、交互式的Web应用。此框架通常结合C#或VB.NET等编程语言使用,为开发者提供了丰富的工具和库,使得构建复杂的...

    asp.net-cms后台管理系统

    这是一个关于后台管理前台的系统,通过后台的操作,在前台动态显示。本网站使用vs2008,asp.net3.0编写。代码编写对初学者是很容易,因为我也是一个初学者。如有疑问可以叫我QQ:562257748~!

Global site tag (gtag.js) - Google Analytics