从Javascript方法调用c#函数

时间:2013-04-03 15:37:37

标签: c# javascript

我正在尝试从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;
}

当我尝试这一切时,没有任何事情发生。

我不知道我在这里做错了什么......

有人可以帮我吗?

谢谢!

2 个答案:

答案 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();”失去意义......

但是有一些方法可以使用异步请求

请参阅https://en.wikipedia.org/wiki/Ajax_%28programming%29