1

重複の可能性:
jQuery から Web サービスを呼び出す

2 つの数値を加算したいのですが、操作は WCF で行う必要があり、結果は default.aspx ページに表示されます。

jquery を使用して 2 つのテキスト ボックスの値を WCF サービスに渡すにはどうすればよいですか?

4

1 に答える 1

2

新しいサービス コントラクトを定義することから始めることができます。

namespace WebApplication1
{
    [ServiceContract]
    public interface IService1
    {
        [OperationContract]
        [WebGet(UriTemplate = "add?a={a}&b={b}", 
                BodyStyle = WebMessageBodyStyle.Bare, 
                ResponseFormat = WebMessageFormat.Json)]
        int Add(int a, int b);
    }
}

実装:

namespace WebApplication1
{
    public class Service1 : IService1
    {
        public int Add(int a, int b)
        {
            return a + b;
        }
    }
}

エンドポイント ( ~/service1.svc):

<%@ ServiceHost 
    Language="C#" 
    Debug="true" 
    Service="WebApplication1.Service1" 
    CodeBehind="Service1.svc.cs" 
%>

web.config 内で REST を有効にするようにサービスを構成します。

<system.serviceModel>
  <behaviors>
    <serviceBehaviors>
      <behavior name="">
        <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
        <serviceDebug includeExceptionDetailInFaults="false" />
      </behavior>
    </serviceBehaviors>
    <endpointBehaviors>
      <behavior name="rest">
        <webHttp/>
      </behavior>
    </endpointBehaviors>
  </behaviors>
  <services>
    <service name="WebApplication1.Service1">
      <endpoint
        address=""
        contract="WebApplication1.IService1"
        binding="webHttpBinding"
        behaviorConfiguration="rest"
        />
    </service>
  </services>
  <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
      multipleSiteBindingsEnabled="true" />
</system.serviceModel>

これで、WebForm1.aspx をプロジェクトに追加してサービスを利用できるようになりました。

<%@ Page Language="C#" %>

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    </form>
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
    <script type="text/javascript">
        $.ajax({
            url: '<%= ResolveUrl("~/service1.svc/add") %>',
            type: 'GET',
            cache: false,
            data: { a: 5, b: 7 },
            success: function (result) {
                alert(result);
            }
        });
    </script>
</body>
</html>
于 2012-10-11T07:24:08.320 に答える