1

我正在尝试从 javascript 函数调用 ac# 函数:

在我的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>

默认.aspx.cs

[WebMethod]
public static string Connect()
{
    string test;
    test = "test";
    return test;
}

当我尝试这个时,没有任何反应。

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

有人可以帮助我吗?

谢谢!

4

2 回答 2

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>
于 2013-04-03T15:42:34.897 回答
1

是的,那是因为 C# 在服务器端执行而 javascript 在客户端执行,所以当您的 aspx 呈现页面时,“PageMethods.Connect();” 失去了意义……

但是有办法做到这一点,异步请求

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

于 2013-04-03T15:39:53.953 回答