2010-12-03 16 views

答えて

1

Ajax対応のWCFサービスを使用する必要があります。私は名前を正確に覚えていませんが、JSからアクセスできるように属性でマークする必要があります。

+0

@John @RPMにはここでコメントがありません。あなたは@Davitaに応答しているように見えますが、答えは正しいものです。 AJAX対応のWCFサービスは、あなたが鼻を持ち、WCFを使用したい場合は、行く方法です。 – mattmc3

0

既存のコードを維持していて変更できない場合を除き、 "Webサービス"テンプレートは使用しないでください。

4

代わりに汎用HTTPハンドラを使用してください。コードは簡単です。あなただけの単一のメソッドの使用を呼び出す場合

+0

真剣に?その驚くべき陳述を具体化してください。 –

+1

なぜハンドラの上に効果的に構築されるWebサービスまたはwcfサービスを使用するのですか? – Phill

+0

@Phill:機械語で構築された高水準言語はなぜ使用するのですか? –

0

は、あなたはそれが使用されているページにインラインでそれをコーディングすることができます

をScriptMethod。 ScriptService属性は、それがASPで使用するために ために、.NET Webサービスで定義されて を持って のみASP.NET AJAXの属性である

属性ScriptMethodを使用して http://www.asp.net/ajax/tutorials/understanding-asp-net-ajax-web-services

.NET AJAXページ。ただし、ScriptMethodという名前の別の属性 も、 サービスのWebメソッドに直接適用できます。 ScriptMethodはUseHttpGet、ResponseFormat およびXmlSerializeStringを含む という3つのプロパティを定義します。これらの特性の 値を変更すると、ウェブメソッドによって受け入れ 要求のタイプは、Web メソッドのXmlDocumentの 形で生のXMLデータを返す必要がある場合、GETに変更する を必要とする場合には 有用であり得ますまたは XmlElementオブジェクトの場合、またはサービスから返された データが常に のJSONではなくXMLとしてシリアル化される必要がある場合。

WebメソッドがPOST要求に対してGET 要求を受け入れる必要がある場合、UseHttpGetプロパティは を使用できます。 リクエストはWeb のURLを使用して送信されます。メソッド入力パラメータは QueryStringパラメータに変換されます。 UseHttpGet プロパティはデフォルトでfalseに設定されており、 操作が安全であるとわかっている場合、および の機密データがWeb サービスに渡されない場合にのみ、 をtrueに設定する必要があります。リスト6は、UseHttpGetプロパティー でScriptMethod属性を使用する の例を示しています。

+0

'[ScriptMethod]を使用すると、コードはWCFで置き換えられた古いASMX Webサービステクノロジに結び付けられます。 '[ScriptMethod]'はWCFで置き換えることができますが、メソッドがどこから呼び出され、単純さが一般性よりも重要なのは良い考えであると確信しているかもしれません。 –

+2

古くなっているかもしれませんが、それは機能し、シンプルでエレガントです。それには何か言われることがあります。 – mattmc3

+0

@mattmc:はい、何か言いたいことがありますが、それはあまりにも多くのことを言います。新しい開発者がそのコードを見て "[PageMethod]"が何であるか分からないうちにどれくらい前になるのでしょうか? –

0

これらが唯一の選択肢であれば、私はAJAX対応WCFサービスが最も簡単に動作することがわかりました。それはまだWCFですが、適切なweb.configセットアップをテンプレートにして、プレーンな "WCFサービス"テンプレートが提供するインターフェイスを切り捨てます。これは、古いASMXスタイルのWCFの混乱の中で最も簡単なことだと思われます。

もう1つの選択肢として、ASPを使用できるようになった場合も同様です。NETあなたのWebフォームプロジェクトでのMVCとちょうどあなたが完全にWebサービスの騒動をスキップし、そのようなあなたのAJAX呼び出しのための単純なJSONの結果を作成することができ、AJAX呼び出しのためにこれを必要とする:

// put this method in a controller 
public JsonResult AjaxJsonTest(string who) { 
    var result = new { 
     Success = true, 
     Message="Hello, " + (who ?? "world!") 
    }; 
    return Json(result, JsonRequestBehavior.AllowGet); 
} 

そして、あなたはからそれを呼び出すことができますjQueryのように:

多くのオプション - あなたの状況に最も適したものを選んでください。

関連する問題