ページをまったくレンダリングせずに AJAX 経由でメソッドを呼び出すにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/67621

  •  09-06-2019
  •  | 
  •  

質問

私はASP.netを使用しています。

使用しているページの基本クラスに存在するメソッドを呼び出そうとしています。このメソッドを Javascript 経由で呼び出したいので、ASP.net でレンダリングを処理する必要はありません。

これを達成する最も簡単な方法は何でしょうか。

何らかの理由で動作しない PageMethods を調べたところ、他の多くの人が PageMethods で問題を抱えていることがわかりました。

役に立ちましたか?

解決

それはメソッドが何に依存しているかによって異なりますが、それが静的メソッドであるか、ページ ライフサイクルに依存せずに動作すると仮定すると、Web サービス エンドポイントを公開し、使用したい Javascript 呼び出しメカニズムを使用してそれにアクセスできます。

他のヒント

Ajax 呼び出しを行うためにどのライブラリを使用していますか?JQuery を使用している場合は、静的メソッドを作成してページ上で呼び出すことができます。さらにサポートが必要な場合はお知らせください。

Thunder3 が示唆しているように、Web サービスを公開します。これを完了すると、Web サービスを ScriptManager (または ScriptManagerProxy) に登録できます。これにより、JavaScript ラッパーが生成されます。このラッパーは、呼び出しへの優れたインターフェイスを提供します。

の指摘をさらに拡張すると、 @アザム, 、ページ上に HTML をレンダリングしたくない場合は、戻り値の型を xml などの別のものに設定し、以下のコードのように response.write を実行できます。GET 中に HTML を送り返したいのですが、POST 中にネットワーク経由で XML を送り返します。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        Response.Cache.SetCacheability(HttpCacheability.NoCache)
        If Request.HttpMethod = "GET" Then
            'do some work and return the rendered html
        ElseIf Request.HttpMethod = "POST" Then
            'do some work and return xml
            Response.ContentType = "text/xml"
            Response.Write("<data></data>")
            Response.End()
        Else
            Response.StatusCode = 404
            Response.End()
        End If
    End Sub
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top