从WFC服务返回Json结果并在$ .ajax中使用结果

时间:2013-02-20 05:24:30

标签: c# asp.net wcf web-services jquery

我有一个asp.net页面,我正在使用jquery ajax。我需要创建一个方法,我可以在$ .ajax中使用它作为url。我在网上搜索,发现我需要创建WCF服务。我的解决方案是在asp.net 3.5中。我已经在IJsonDataService.cs接口中创建了两个方法,就像这个

    [ServiceContract]
    public interface IJsonDataService
    {
        [OperationContract]
        Person DoWork();

        [OperationContract]
        string GetData();
    }

and then in class file I have implemented them like this:

   [WebGet(RequestFormat= WebMessageFormat.Json, ResponseFormat=WebMessageFormat.Json,UriTemplate="data/{id}")]
 public Person DoWork(){
 return new Person();

}

 [WebGet(RequestFormat= WebMessageFormat.Json, ResponseFormat=WebMessageFormat.Json,UriTemplate="data/{id}")]
    public string GetData(string parameter)
    {
        return "this is" + abc;
    }

我的web.config看起来像这样:

<system.serviceModel>
        <behaviors>
            <serviceBehaviors>
                <behavior name="JsonDataServiceBehavior">
                    <serviceMetadata httpGetEnabled="true" />
                    <serviceDebug includeExceptionDetailInFaults="false" />
                </behavior>
            </serviceBehaviors>
        </behaviors>
        <services>
            <service behaviorConfiguration="JsonDataServiceBehavior" name="JsonDataService">
                <endpoint address="" binding="wsHttpBinding" contract="IJsonDataService">
                    <identity>
                        <dns value="localhost" />
                    </identity>
                </endpoint>
                <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
            </service>
        </services>
    </system.serviceModel>

我想将Id传递给这些方法,然后查询数据库并返回结果,然后将结果格式化为json并将json重新调回$ .ajax方法。我需要在上面的方法中做出什么改变?如何以json的形式返回数据然后在$ .ajax中使用它?请建议。

3 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

您可以查看此内容。这种方法与您想要实现的方法类似。

Web Service in MVC app

如果您想要一个示例JSONP,请参阅My javascript won't work as it should

答案 2 :(得分:0)

您的配置需要如下所示:

<system.serviceModel>
<endpointBehaviors>
        <behavior name="web">
          <webHttp />
          <dataContractSerializer maxItemsInObjectGraph="2147483647"/>
        </behavior>
        <behavior name="json">
          <enableWebScript />
        </behavior>
      </endpointBehaviors>
        <behaviors>
            <serviceBehaviors>
                <behavior name="JsonDataServiceBehavior">
                    <serviceMetadata httpGetEnabled="true" />
                    <serviceDebug includeExceptionDetailInFaults="false" />
                </behavior>
            </serviceBehaviors>
        </behaviors>
        <services>
            <service behaviorConfiguration="JsonDataServiceBehavior" name="JsonDataService">
                <endpoint address="" behaviorConfiguration="web" binding="webHttpBinding" contract="namespace.IJsonDataService">                       
                </endpoint>                    
            </service>
        </services>
    </system.serviceModel>