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>

Default.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()); });

最初のコールバックは、サーバーがエラーなしで結果を返したときに呼び出され、2 番目のコールバックはエラー時に呼び出されます。

詳細については、次を参照してください。

また、スクリプト マネージャーを追加することを忘れないでください。

<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 に答える