0

JQuery で "Ajax" を実行してデータを JSON 形式で取得するには、Web サービスを使用する必要がありますか? 同僚は「Httphandler」を使用することをお勧めします...最終的に、DataAccessLayerでメソッドを直接呼び出してAjaxに渡すことはできないのでしょうか...

JQuery で Ajax を実行するための Web サービスが本当に必要な場合、誰か説明してもらえますか? サーバーは1 つしかない (リモート サーバーがない)ため、Web サービスは必要ないのでしょうか?

4

3 に答える 3

1

実際には、個別の Web サービスは必要ありません。同じページで実際に AJAX を実行できます。私はこれについて少し錆びているので、我慢してください。しかし、あなたがすることは次のとおりです。

  1. AJAX コントロール ツールキットから ToolkitScriptManager を追加する
  2. HTML で、フォーム タグの直後にこれを追加します。<asp:ToolkitScriptManager runat="server" EnablePageMethods="true"/>
  3. [ScriptService]ページクラス宣言に属性を追加します
  4. [ScriptMethod]呼び出したいメソッドに属性を追加します。デフォルトでは JSON として送信されますが、次を使用して XML で応答できます。[ScriptMethod(ResponseFormat = ResponseFormat.Xml)]
  5. このメソッドは、ページ レンダリング サイクルを再実行せずに実行する必要があるため、静的である必要があります。
  6. これで、関数を呼び出すための jQuery が必要になります
[ScriptService]
public class MyPage : Page
{
   [ScriptMethod]
   public static string GetText() { return "Hello, world!"; }
}
<html>
<!-- jQuery scripts -->
<body>
<script language="javascript">
   $.ready(function () {

   var text = PageMethods.GetText();
   $("#label1").value(text);
   });
</script>
<form runat="server">

  <asp:ToolkitScriptManager runat="server" EnablePageMethods="true"/>
  <asp:Label runat="server" ID="label1"/>

</form>
</body>
</html>
于 2012-09-05T12:55:31.047 に答える
0

いいえ、あなたはしません。あなたがする必要があるのは、

  • ヘッダー「application/json」で正しいコンテンツタイプを送信します
  • サーバー側の出力を再配置して、実際の出力の JSON 文字列表現を返す
于 2012-09-05T12:47:34.940 に答える
0

AJAXを使用して、通常の.aspx(asp.netのHttpHandlerについて知っています)ページを呼び出すことができます。ただし、その場合、多くの追加作業を行っています (ページ実行の通常のフローを停止し、ガベージを返さないようにし、応答を JSON に変換する必要があります) 同時に -webservice はそのすべてのインフラストラクチャを必要としません。通常のページ (asp.net) に必要であり、サーバーに追加の負荷を発生させません。HttpHandler についても同様です。あなたは必要なことだけをしていて、他には何もしていません。

于 2012-09-05T12:52:03.367 に答える