先帮朋友宣传一下程序人生(http://www.manong123.com)的网站,里面都是开发感悟,开发人员创业,支持一下吧~

原来是通过PageMethods来实现的。

举个列子:

Default.aspx 里代码

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.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 runat="server">
<title>无标题页</title>
<script type="text/javascript" language="javascript">
<!--
function minbzdm()
{
PageMethods.OK(xxx);
}
function xxx(result)
{
alert(result);
}
//-->
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true">
</asp:ScriptManager>
<div>
<input type='button' value='删除' onclick='minbzdm()' />
</div>
</form>
</body>
</html>

Default.aspx.cs里的代码

public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
} [System.Web.Services.WebMethod]
public static string OK()
{
return "OK";
}
}
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
} [System.Web.Services.WebMethod]
public static string OK()
{
return "OK";
}
}

通过PageMethods方法来实现JS调用CS,必须注意一下几点:

【1】静态的方法

public static

【2】需要在cs方法上加上:

[System.Web.Services.WebMethod]

【3】需要自定义一个函数接受结果

function xxx(result) 
        { 
        alert(result); 
        }

【4】ScriptManager 必须设置成 EnablePageMethods="true"

注意:

1、PageMethods.OK( 参数一,参数二,参数三,...,xxx);可以传入参数。对应的CS后台方法也要改进!

2、xxx为回调函数名,只有仅有一个参数。参数可以是数组,List<T>泛型等。

http://www.cnblogs.com/juxiaoqi/archive/2008/08/21/1273059.html 
补充:

AJAX 调用Web Service 与 PageMethods注意细节

想要使用ASP.NET AJAX在客户端JavaScript中异步调用服务器端Web Service,我们需要:

1 为Web Service类或需要暴露给客户端的Web Service方法添加[ScriptService] 
      属性;

2 为Web Service中需要暴露给客户端的方法添加[WebMethod]属性;

3 在页面中的ScriptManager控件中添加对该Web Service的引用;

4 在客户端使用如下JavaScript语法调用该Web Service: 
      [NameSpace].[ClassName].[MethodName](param1, param2,..., callbackFunction)

5 为客户端异步调用指定回调函数,在回调函数中接收返回值并进一步处理。

-----------------------

想要使用ASP.NET AJAX在客户端JavaScript中异步调用定义在ASP.NET页面中的方法,我们需要:

1 将该方法声明为公有(public);

2 将该方法声明为类方法(C#中的static,VB.NET中的Shared),而不是实例方法;

3 为该方法添加[WebMethod]属性;

4 将页面中ScriptManager控件的EnablePageMethods属性设置为true;

5 在客户端使用如下JavaScript语法调用该页面方法: 
      PageMethods.[MethodName](param1, param2,..., callbackFunction);

6 为客户端异步调用指定回调函数,在回调函数中接收返回值并进一步处理。

补充:另外一种调用

前台JS:

function check() { 

            var title = document.getElementById("TabContainer1_tabpanel4_txtPicTitle").value; 

            var sn = document.getElementById("TabContainer1_tabpanel4_txtSN").value; 

            var playGUID = document.getElementById("TabContainer1_tabpanel4_hidPlayGUID").value; 

            var msg = Drilling_Pictures.Validate(title, sn, playGUID).value;//主要注意这里 

            if (msg == "") { 

                return true; 

            } else { 

                alert(msg); 

                return false; 

            } 

        } 

<asp:ImageButton ID="imgBtn" runat="server" ImageUrl="~/images/btn25.png" OnClick="imgBtn_Click"                                                               OnClientClick="return check();" /> 

后台代码:

public partial class Drilling_Pictures : BasePage 

{ 

    [AjaxPro.AjaxMethod] 

    public string Validate(string title, string sn, string playGUID) 

    { 

        string str = ""; 

        if (title.Trim() == "") 

        { 

            str = "标题不能为空"; 

        } 

        else if (sn.Trim() == "") 

        { 

            str = "序号不能为空"; 

        } 

        else if (!ConvertInt(sn.Trim())) 

        { 

            str = "序号必须为整数"; 

        } 

        else if (!new DrillingPlayBack().CheckSN(playGUID, int.Parse(sn))) 

        { 

            str = "序号已经存在"; 

        } 

        return str; 

    } 

} 

JS调用asp.net后台方法:PageMethods的更多相关文章

  1. ajax 调用asp.net后台方法

    ajax 调用asp.net后台方法  这种做法有好几种,如调用xx.asxh 页面,或者直接调用xx.aspx也面,在page_Load中进行一些判断然后调用后面的其他方法, 或者你可以直接调用we ...

  2. jQuery调用Asp.Net后台方法

    常用的ajax就不讲了,这里主要是说通过ajax调用asp.net后台的cs文件暴露的方法. 前台: <%@ Page Language="C#" AutoEventWire ...

  3. JQuery Ajax调用asp.net后台方法

    利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法. 先来个简单的实例热热身吧. 1.无参数的方法调用 asp.net code: using System.Web.Scrip ...

  4. jQuery.ajax()调用asp.net后台方法

    利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法.介意方法名不要重名 建一个WebFormAjax名aspx文件 CS <%@ Page Language=" ...

  5. 利用JQuery直接调用asp.net后台方法

    利用JQuery的$.ajax()可以很方便的调用asp.net的后台方法. [WebMethod]   命名空间 1.无参数的方法调用, 注意:1.方法一定要静态方法,而且要有[WebMethod] ...

  6. Js调用asp.net后台代码

    方法一:         1.首先建立一个按钮,在后台将调用或处理的内容写入button_click中; 2.在前台写一个js函数,内容为document.getElementById("b ...

  7. jQuery.ajax()调用asp.net后台方法(非常重要)

    http://www.cnblogs.com/zxhoo/archive/2011/01/30/1947752.html 用JQuery的$.ajax()可以很方便的调用asp.net的后台方法. 先 ...

  8. js调用asp.net 后台属性值

    后台代码: public string title = "js调用后台属性值"; public void getContent() { return title; } 前台代码: ...

  9. .Net中jQuery.ajax()调用asp.net后台方法 总结

    利用JQuery的$.ajax()调用.Net后台方法有多种方式, 不多说了  直接上代码 前台代码 <script type="text/javascript"> $ ...

随机推荐

  1. MIME protocol 说明

    按照 <张孝祥Java邮件开发详解> 自己create了 emali, 其中jpg 和wav文件格式过大,删除了写内容 From redhat@diego.com Mon Nov 17 0 ...

  2. php 一个过虑xxs的代码

    一个过虑xxs的代码 public static function removeXSS($str) { $str = str_replace('<!-- -->', '', $str); ...

  3. HDU 5389 Zero Escape(dp啊 多校)

    题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=5389 Problem Description Zero Escape, is a visual no ...

  4. apache绑定多个域名

    在httpd.conf里, 1.把#NameVirtualHost *:80前的注释去掉2.ServerName 127.0.0.1 修改成ServerName 72.167.11.303.#Name ...

  5. RBAC权限设计实例(转)

    实现业务系统中的用户权限管理 B/S系统中的权限比C/S中的更显的重要,C/S系统因为具有特殊的客户端,所以访问用户的权限检测可以通过客户端实现或通过客户端+服务器检测实现,而B/S中,浏览器是每一台 ...

  6. mosquitto 启动命令

    启动命令 mosquitto [-c config file] [ -d | --daemon ] [-p port number] [-v] -c 后面跟的是启动mosquitto可以调整的参数,比 ...

  7. Linux下TCP/IP内核参数优化

    /proc/sys/net目录 所有的TCP/IP参数都位于/proc/sys/net目录下(请注意,对/proc/sys/net目录下内容的修改都是临时的,任何修改在系统重启后都会丢失),例如下面这 ...

  8. python --curl重定向到文件范例

      import sys import os import subprocess import time start = time.time() old=sys.stdout f=open('test ...

  9. 摘: VS2010 C++ 调用 DLL (C++编写)

    一.为什么需要dll 代码复用是提高软件开发效率的重要途径.一般而言,只要某部分代码具有通用性,就可将它构造成相对独立的功能模块并在之后的项目中重复使用. 比较常见的例子是各种应用程序框架,如ATL. ...

  10. POJ 2750 Potted Flower (单点改动求线段树上最大子序列和)

    题目大意: 在一个序列上每次改动一个值,然后求出它的最大的子序列和. 思路分析: 首先我们不考虑不成环的问题.那就是直接求每一个区间的最大值就好了. 可是此处成环,那么看一下以下例子. 5 1 -2 ...