1

ajaxメソッドの背後にあるc#コードからjavascript関数( CommentButtonShow() )を呼び出す必要があります。私はこれを達成することができません。

以下はC#ajaxメソッドです。

[AjaxMethod(HttpSessionStateRequirement.ReadWrite)]
public string CheckPassword()
{
  ScriptManager.RegisterClientScriptBlock(this, GetType(), "ScriptManager1", "javascript:CommentButtonShow();", true);
}

以下はjavascript関数です。

    function CommentButtonShow() {
        $("#ctl00_mainContentPlaceHolder_divEmailFriends").removeClass('hidden').addClass('show'); 
    }

私を助けてください。

ありがとう。

4

3 に答える 3

1

CommentButtonShow()ajax呼び出し成功イベント内のjavascriptで関数を呼び出すことができます。Web メソッド内で JavaScript 関数を呼び出すことはできません。ポストバックの場合、コードは機能しますが、ajax コールバックの場合は機能しません。

于 2012-04-17T08:28:59.227 に答える
0

私はこれに答えて、このサイレント側とサーバー側のスクリプトに慣れていない人たちにもっと光を当て、彼らに興味深い仕事をするときに混同します:)

これは、C# (サーバー側) コード内から Javascript (クライアント側) 関数を呼び出すことは絶対に不可能です。つまり、地球上のどのプログラミング言語でも、JavaScript をサーバー側のコードに呼び出すことはできません。

とてもシンプルです。サーバー側のコードは、クライアント側のコードをレンダリングします。クライアント コード (html/javascript) はブラウザーに存在するため、少なくともサーバー側でそれを取得して呼び出すための JavaScript 用のフックはありません。ただし、Asp.Net では、クライアント側の HTML コントロール (ほとんどの HTML タグ) を実際にサーバー側のコントロール (.net フレームワークがサポートする) に変換するフックが提供され、サーバーでのみ呼び出されるプロパティといくつかのメソッドにアクセスできます。 -側。JavaScript イベントなどがあるという意味ではありません。これらのサーバー側コントロールで行うことはすべて、サーバー側でのみ発生し、そのコントロールの最終コードがブラウザーに送信されてレンダリングされる前に、すべてが完了します。そのため、このようなコントロールの html がレンダリングされると、_ctr01 などの典型的な .net ベースの ID 生成が表示されます。

とにかく、(クライアント側で) Ajax を使用すると、Ajax.Net および/または Ajaxpro (ajaxpro.info) またはカスタム JavaScript ライブラリ (jquery) を使用してサーバー側メソッドを呼び出すことができます。

これが、あなたがしていることは実際には不可能であることを理解するのに役立つことを願っています. 多くの新規参入者が物事がどのように機能し、これを経験した人々がどのように正しく理解したかを理解するのに実際に役立つため、私はまだあなたの質問を否定的に評価しません.

このフォーラムを非常に公正に使用して、誰もが質問/回答が正しい/間違っていることを知らずに自分の意見を否定するのに役立つ情報を提供することを願っています.

どうもありがとう。

于 2012-10-11T15:51:12.260 に答える