JavaScriptからASP.NETのWebMethod(PageMethod)を呼び出す方法

ASP.NET

ジェネリックハンドラー(.ashx)やWCFサービス(.svc)を試してみましたが、PageMethodが1番楽だと思います。

 

EnablePageMethods属性

ScriptManagerを配置し、EnablePageMethods属性をtrueにします。

<asp:ScriptManager ID="sm1" runat="server" EnablePageMethods="true">
</asp:ScriptManager>

※ ここをtrueにしていないと実行時に下記のエラーが発生します。

Uncaught ReferenceError: PageMethods is not defined

 

WebMethodを作成

コードビハインド(.aspx.csファイル)にWebMethod属性を付与したstaticなメソッドを作成します。

[System.Web.Services.WebMethod]
public static string getName(int id)
{
    if (id == 42)
    {
        return "太郎";
    }
    throw new Exception("エラーです。");
}

 

JavaScriptから呼び出す

PageMethodsを使用してWebMethodを呼び出します。

引数は次の通りです。

  • 42
    WebMethodの引数です。複数ある場合はカンマ区切りで羅列します。
  • onSuccess
    成功時に処理される関数です。
  • onError
    失敗時に処理される関数です。
    今回の例では「42」以外の引数を渡すと、WebMethod側が例外を投げるのでこの関数が処理されるようになります。
<script type="text/javascript">
PageMethods.getName(
    42,
    onSuccess,
    onError
);
function onSuccess(result, userContext, methodName) {
    alert(result);
}
function onError(result, currentContext, methodName) {
    alert('error:' + result.get_message());
}
</script>

 

コメント

タイトルとURLをコピーしました