2011-01-31 9 views
5

jQuery AJAXを使用して特定のASP.NETページメソッドを呼び出すと、そのメソッドが呼び出すAJAXメソッドに値を返す方法を教えてください。jQuery-AJAX呼び出しASP.NETページメソッド。どのようにjQueryに価値を返すのですか?

更新

私の状況は、私は多くの既存の方法で既存のWebアプリケーションを持っています。私はこれらのメソッドのいくつかを実行するためにjQueryを使用し、その結果でUIを更新できるようにしたいと考えています。私の義務は、ASP.NET AJAXから離れ、jQueryに固執することです。管理者は、マイクロソフトのASP.NET AJAXによる継続的な開発とサポートに懸念があります。私は彼らに同意する。

答えて

1

この猫には2つの方法があります(これは私がよく知っています)。 Webメソッドとスクリプトマネージャを必要とする

  1. ".NETウェイ"(こちらを参照:http://geekswithblogs.net/frankw/archive/2008/03/13/asp.net-ajax-callbacks-to-web-methods-in-aspx-pages.aspxを)。

  2. 「古いスキルウェイ」は、単に何が呼び出されたのかを判断することで応答を出します。通常、MVCのようなフレームワークを使用するので、http://www.MyWebsite.com/Object/Method/Idに行くと、Object.Method(id)にマップすることができます。

あなたは、MVCのようなフレームワークなしでこれを行うことができますが、それは物事が少し難しくして、あなたはそのルートを行けば、あなたは本当にあなたドンので、ASP.Netハンドラではなく、実際のページを(使用する必要がありますAspxオーバーヘッドが必要です)。これはAshxファイルです。

1

純粋なASP.NET(ここではWCFを話しません)では、ハンドラ(ASHX)ファイルを使用してJSONをインターチェンジ形式として使用します。私はJSON(詳細はhere)の詳細には入りませんが、その考え方は、jsonのテキストを生成してクライアントに返す軽量のハンドラです.JavaScriptで構造を簡単に使用できます。

これは明らかに単純な例ですが、要点はJSONがサーバーからデータ駆動され、クライアント上のJavaScriptによって簡単に消費されるということです。

サーバー:

<%@ WebHandler Language="C#" Class="Handler" %> 

using System; 
using System.Web; 

public class Handler : IHttpHandler { 

    public void ProcessRequest (HttpContext context) { 
     context.Response.ContentType = "text/json"; 
     context.Response.WriteFile("~/myData.json"); 
    } 

    public bool IsReusable { 
     get { 
      return false; 
     } 
    } 
} 

クライアント:

myData = 
     (function() 
     { 
      var json = null; 
      $.ajax({ 
       'async': false, 
       'global': false, 
       'url': "handler.ashx", 
       'dataType': "json", 
       'success': function (data) {  
        // this code is called when the 
        // data is returned from the server    
        json = data; 
       } 
      }); 
      return json;  
     } 
     )(); 

alert(myData.MyArray[0].MyProperty); 
+0

"Handler"タイプに慣れていません。 AJAXメソッドは標準のWebメソッドを実行して結果を得ることができませんでしたか? – webworm

+1

ASP.NetハンドラはASPXページと似ていますが、オーバーヘッドがずっと少なく、このようなもののために設計されています(RSSフィードも考えてください)。 jQueryを使用してWebMethod(上記の提案の1つ)を実行できます。 mjmarshのアプローチははるかに軽量で、ASPXファイルだけでなく.Netイベント構造を扱うよりもオーバーヘッドが少ないので、少し速くする必要があります。 – Kris

+1

@Kris:それは間違っています。 ASPXページで定義された「ページメソッド」をリクエストすると、伝統的なWebFormsページのライフサイクルのいずれにも触れません。実際には、作成されるページのインスタンスなしで実行されるため、静的メソッドでなければならない場合もあります。これは、ASPXページでインラインでASMX "ScriptService"メソッドを宣言するための特殊なケースです。 –

関連する問題