我正在尝试从javascript函数调用c#函数:
在我的 default.aspx 中,我有以下代码:(javascript)
<script type="text/javascript">
function App() {
var temp;
temp = PageMethods.Connect();
alert(temp);
}
</script>
(的 HTML )
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<div class="menuContent">
<p><a href="#" onclick="App();">blabla!</a></p>
<div id="navTreeContainer">
<div id="navtree"></div>
</div>
</div>
</asp:Content>
Default.aspx.cs
[WebMethod]
public static string Connect()
{
string test;
test = "test";
return test;
}
当我尝试这一切时,没有任何事情发生。
我不知道我在这里做错了什么......
有人可以帮我吗?
谢谢!
答案 0 :(得分:2)
原因是您错过了PageMethods.Connect()
方法中的几个参数。
PageMethods.Connect();
将通过服务器上的ajax调用该函数,但它是异步的,因此您必须指定回调。
PageMethods.Connect(function(resp){ alert(resp); },
function(err){ alert(err.get_message()); });
当服务器返回结果而没有错误时调用第一个回调,第二个回调在出错时被调用。
更多信息请访问:
另外,不要忘记添加脚本管理器:
<asp:ScriptManager runat="server" EnablePageMethods="true" EnablePartialRendering="true"></asp:ScriptManager>
答案 1 :(得分:1)
是的,那是因为C#在服务器端执行而javascript在客户端执行,所以当你的aspx呈现页面时,“PageMethods.Connect();”失去意义......
但是有一些方法可以使用异步请求