前后台互相调用function

takako_mu 2009-05-19 09:50:58
加精
最近看到好几个帖子都在问后台如何调用前台?前台如何调用后台?
小弟总结了一下share给大家,有不足之处欢迎补充.

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="JavaScript get Net Function.aspx.cs" Inherits="JavaScript_get_Net_Function" %>

<!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>
<%--
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.為客戶端異步調用指定回調函數,在回調函數中接受返回值并進一步處理;
7.添加 using System.Web.Services;
--%>

<%--
ASP.Net后臺調用JavaScript function的方法,我們要注意:
1.盡量少用Response.Write(<script></script>);這種方法,它會影響CSS導致頁面效果偏差
2.C#中使用ScriptManager.RegisterStartupScript(this, this.GetType(), "edit", "JS('"+param1+"','"+param2+"')", true);
3.添加 using System.Web.UI;
--%>

<script type="text/javascript">

/*-------------JavaScript調用.Net后臺Start----------------------------------*/
function JsCallCSharp(param1)
{
PageMethods.SayHelloFromPage(param1,onSayHelloSucceeded);
}

function onSayHelloSucceeded(result)
{
alert(result);
}
/*-------------JavaScript調用.Net后臺End----------------------------------*/

/*-------------.Net調用JavaScript Start-----------------------------------*/
function CSharpCallJs(param1,param2)
{
alert(param1 + param2);
}
/*-------------.Net調用JavaScript Start-----------------------------------*/
</script>

</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" EnablePageMethods="true" runat="server" />
</div>

<asp:Button ID="Button1" onclick="Button1_Click" OnClientClick="JsCallCSharp('takako');" runat="server" Text="Button1" />

</form>
</body>
</html>



using System;
using System.Web.Services;
using System.Web.UI;

public partial class JavaScript_get_Net_Function : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{

}

protected void Button1_Click(object sender, EventArgs e)
{
string param1 = "你好:";
string param2 = "takako_mu";
ScriptManager.RegisterStartupScript(this, this.GetType(), "edit", "CSharpCallJs('" + param1 + "','" + param2 + "');", true);
}

[WebMethod]
public static string SayHelloFromPage(string name)
{
return string.Format("Hello {0}!", name);
}
}

...全文
4975 89 打赏 收藏 转发到动态 举报
写回复
用AI写文章
89 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdnjiejie65 2010-04-23
  • 打赏
  • 举报
回复
MARK@
流浪河 2010-02-23
  • 打赏
  • 举报
回复
那还不如用ICallbackEventHandle
w20011025 2009-11-18
  • 打赏
  • 举报
回复
就加个webservers一样的吧
neruix 2009-09-02
  • 打赏
  • 举报
回复
就加个webservers一样的吧
me_child 2009-09-01
  • 打赏
  • 举报
回复
顶 收藏!
zhendexiangfangqi 2009-08-28
  • 打赏
  • 举报
回复
不错,谢谢分享了。
maple326 2009-08-28
  • 打赏
  • 举报
回复
mark
宸路 2009-08-22
  • 打赏
  • 举报
回复
顶。
V-Far 2009-08-17
  • 打赏
  • 举报
回复
嗯.测试有效.aspx文件需要添加代码
<%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" Namespace="System.Web.UI" TagPrefix="asp" %>


web.config也需要添加代码,不然会显示"sys"未定义
Luohui109 2009-08-08
  • 打赏
  • 举报
回复
顶起..谢谢了..收藏...
铁樵 2009-07-10
  • 打赏
  • 举报
回复
原来是AJAX.NET啊,不错呢,AJAX.NET非常好用而且简单,建议大家去www.asp.net去看一下微软的官方入门视频,很简单的!
befighting 2009-07-10
  • 打赏
  • 举报
回复
好想法啊
白云任去留 2009-07-10
  • 打赏
  • 举报
回复
看看...
bm030 2009-07-10
  • 打赏
  • 举报
回复
[Quote=引用 48 楼 keqing1314 的回复:]
vs2005 报错未定义Sys是什么原因,,报错地方在下面

PageMethods.prototype = {
SayHelloFromPage:function(name,succeededCallback, failedCallback, userContext) {
return this._invoke(PageMethods.get_path(), 'SayHelloFromPage',false,{name:name},succeededCallback,failedCallback,userContext); }}
PageMethods.registerClass('PageMethods',Sys.Net.WebServiceProxy);
[/Quote]

这个错误是ScriptManager的问题 ,自己在检查下 ,有时项目中,位置放的不对也会报错
kaizi_sun 2009-07-10
  • 打赏
  • 举报
回复
mark先
jackeyabc 2009-06-26
  • 打赏
  • 举报
回复
UP
sj6071 2009-06-26
  • 打赏
  • 举报
回复
xue_piao_piao 2009-06-26
  • 打赏
  • 举报
回复
。。。。。。。。。。。。。。。。。。。。。。。。。。。。
smartboy986 2009-06-19
  • 打赏
  • 举报
回复
[webmethod]我也确实只有在webservice上用过
nosuchtracter 2009-06-09
  • 打赏
  • 举报
回复
[WebMethod]
加这个和前台调用后台方法有关系吗?
[AxaxPro.AjaxMethod]
如果是ajax的话加这个。webmethod我只过用在webservice
不知道楼主可否说下如何通过[webmethod]调用
不知道是否我见识少
加载更多回复(68)

62,254

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧