2

ページの読み込みが完了したら、メソッドを実行するだけです。

私が使用しているjsは次のとおりです。

<script type="text/javascript">
    $(document).ready(function () {
        $.ajax({
            type: "GET",
            url: document.URL + "/LoadAssignees"
        });
    });
</script>

そして、ここに私が実行しようとしている方法があります:

[WebMethod()]
protected void LoadAssignees()
{
    //load assignees
    var sw = Stopwatch.StartNew();
    sw.Start();
    cboAssignees.DataSource = Uti.GetAssigneeList(_currentUser, 1, false);
    sw.Stop();
    cboAssignees.DataTextField = "Name";
    cboAssignees.DataValueField = "Guid";
    cboAssignees.DataBind();

    Response.Write(string.Format("Assignee load time: {0}", sw.ElapsedMilliseconds));
}

私はこれを正しくやっているように感じました。エラーは発生していませんが、何も起こっていません。メソッドにブレークポイントを設定しましたがヒットしないので、私の ajax 呼び出しが間違っていると思います。私は何が欠けていますか?

余談ですが、私がやろうとしているのは、ページのレンダリングが完了するとすぐに非同期でメソッドを実行することです。それを達成するためのより良い方法を提案できれば、それは私にとってもうまくいきます:)ありがとう。

4

2 に答える 2

1

シナエステティック,

$.ajax()関数呼び出しで応答を処理する必要があります。あなたの場合、jQuery.ajax()jquery.com の説明に記載されている「成功」パラメータを使用します。

これは、コード ビハインドの Response.Write メソッドが、呼び出し元のページではなく、ajax 関数自体に書き戻すためです。その応答が処理されない場合、何も得られません。

たとえば、次のようになります。

    $.ajax({
        type: "GET",
        url: document.URL + "/LoadAssignees",
        success: function(data) {
            alert(data);
        }
    });

編集

また、Ajax 呼び出しで Web メソッドの URL を設定する別の方法を試す必要があります。ページの URL が のhttp://mydomain.com/dir1/pagex.aspx場合、ajax は接続しようとします。http://mydomain.com/dir1/pagex.aspx/LoadAssignees

それが役立つことを願っています!

  • マット
于 2012-08-08T20:22:41.720 に答える
1

ええ、アクセス修飾子の制限が厳しすぎるようです:

この属性が設定されているクラス内のメソッドは、XML Web サービス メソッドと呼ばれます。メソッドとクラスはパブリックであり、ASP.NET Web アプリケーション内で実行されている必要があります。

それはここの「備考」セクションからのものです:http://msdn.microsoft.com/en-us/library/system.web.services.webmethodattribute.aspx

于 2012-08-08T20:23:29.667 に答える