直接调用javascript函数中的C#方法
本文关键字:方法 函数 调用 javascript | 更新日期: 2023-09-27 17:57:38
如何在javascript函数中直接调用c#方法。(例如page_load
页后编码方法)。请帮帮我。
要在客户端事件上调用服务器端方法,需要执行以下操作:
1-创建服务器端方法:
void DoSomething(...) { ... }
2-实现接受一个字符串参数的System.Web.UI.IPostBackEventHandler.RaisePostBackEvent
(您可以将名称分配给该参数的值)
public void RaisePostBackEvent(string eventArgument)
{
DoSomething(...);
}
3-写一个脚本来触发post-back:
function TriggerPostBack(control, arg){
__doPostBack(control, arg);
}
4-需要时调用PostBack触发功能:
<a .... onclick="TriggerPostBack('control', 'arg')" .. />
您有多种选择,每种选择都有其优缺点。
- 如果要调用page_Load事件,只需重新加载页面:
window.location.reload()
,就会调用页面的Load事件 - 如果您想使用Asynchronous来实现,那么必须使用XMLHttpRequest(即使用Ajax库)。您可以使用
jQuery
、Ajax.Net Professional或ASP.Net Ajax的更新面板
javascript将是客户端,page_load将是服务器端。我认为你不能这样调用这个方法。您可以为该方法创建一个单独的页面,并通过ajax 进行调用
简单的答案:你不能(至少是page_load)!清楚地了解什么是服务器端代码,什么是客户端代码。
调用服务器端方法的其他选项是使用AJAX!阅读
您可以创建一个执行要运行的C#方法的ASX处理程序,然后使用AJAX/jQuery来调用该处理程序。
我不特别了解c#,但客户端与服务器端通信的一个好方法是通过RPC(远程过程调用)实现
假设您使用JSON-RPC
首先,创建表示请求的json对象:
var request = {
"method": "echo",
"params": ["Hello JSON-RPC"],
"id": 1
}
其中方法表示您正在调用的函数名,
参数表示指定函数应采用的一系列参数,
id是所请求对象的唯一标识符。
然后您要将此请求发送到服务器。这应该使用ajax来完成。假设您有一个处理ajax请求的函数sendAjaxRequest
,它接受3个参数:
- 服务器端目标脚本
- 请求对象
处理响应的回调
sendAjaxRequest(scriptUrl,request,function(response){ alert("the server responded with : "+response.result); });
服务器接收请求,对其进行解释,并使用所需的参数执行方法,并构造一个响应json对象:
{
"result": "Hello JSON-RPC",
"error": null,
"id": 1
}
并将其发送回客户端。
无论在什么情况下,这都是一个非常好的做法。
如果您想从JavaScript调用C#中的方法,我会使用web方法。下面提供了一个示例。我希望这能有所帮助。
ASP.NET-以下HTML标记由一个ASP.NET文本框和一个HTML按钮组成。
<asp:TextBox ID="txtUserName" runat="server"></asp:TextBox>
<input id="btnGetTime" type="button" value="Show Current Time"
onclick = "ShowCurrentTime()" />
JavaScript代码:-单击按钮时,将执行ShowCurrentTime JavaScript函数,该函数将对GetCurrentTime WebMethod进行AJAX调用。TextBox的值作为参数传递给WebMethod。
<script type = "text/javascript">
function ShowCurrentTime() {
$.ajax({
type: "POST",
url: "CS.aspx/GetCurrentTime", //Type name of your class here e.g student.aspx/Method
data: '{name: "' + $("#<%=txtUserName.ClientID%>")[0].value + '" }',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
failure: function(response) {
alert(response.d);
}
});
}
function OnSuccess(response) {
alert(response.d);
}
</script>
WebMethod-下面的WebMethod向用户返回一条问候消息以及当前服务器时间。需要注意的一点是,该方法被声明为静态(C#),这是必要的,否则该方法将不会从客户端jQueryAJAX调用中调用。
C#
[System.Web.Services.WebMethod]
public static string GetCurrentTime(string name)
{
return "Hello " + name + Environment.NewLine + "The Current Time is: "
+ DateTime.Now.ToString();
}