1

嗨,我有下一个 WCF 服务。

[OperationContract]     
[WebInvoke(Method = "GET", BodyStyle = WebMessageBodyStyle.WrappedRequest, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
//[WebInvoke(UriTemplate = "GetStores?dataViewID={dataViewID}&filter={filter}&extent={extent}", BodyStyle = WebMessageBodyStyle.Bare, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json,)]
string GetStores(int dataViewID, string filter, MapExtent extent);

[DataContract]
public class MapExtent
{
    [DataMember]
    public double XMax { get; set; }

    [DataMember]
    public double XMin { get; set; }

    [DataMember]
    public double YMax { get; set; }

    [DataMember]
    public double YMin { get; set; }
}

接下来是 jQuery 部分

//var mapextend = { XMax: 1.0, XMin: 1.0, YMax: 10.5, YMin: 4.5 };
var paramData = {"dataViewID":12, "filter":"", extent : {"XMax": 1.0, "XMin": 1.0, "YMax": 10.5, "YMin": 4.5} };
$.ajax({
    url: serviceurl + 'GetStores',
    type: 'GET',
    contentType: 'application/json',
    data: paramData,
    success: function (result) {
        alert(result);                    
        },
    error: function (xhr) {
        alert(xhr);
        }
    });

配置看起来像

<system.serviceModel>

    <bindings>
      <webHttpBinding>
         <binding name="webBinding"></binding>
      </webHttpBinding>           
    </bindings>

    <behaviors>

      <endpointBehaviors>
        <behavior name="jsonBehavior">
          <enableWebScript/>
        </behavior>
      </endpointBehaviors>

      <serviceBehaviors>
        <behavior name="ServiceBehavior">
          <serviceDebug includeExceptionDetailInFaults="true" />
          <serviceMetadata httpGetEnabled="true" />
        </behavior>
      </serviceBehaviors>

    </behaviors>

    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>

    <services>           
      <service behaviorConfiguration="ServiceBehavior" name="MyService">
        <endpoint address="" binding="webHttpBinding"  bindingConfiguration="webBinding" contract="IMyService" behaviorConfiguration="jsonBehavior" />        
        <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
      </service>
    </services>
  </system.serviceModel>

当 ajax 调用此服务时,它会调用但所有参数都没有得到任何值。我做错了什么?

4

1 回答 1

2

尝试这个:

jQuery部分:

//var mapextend = { XMax: 1.0, XMin: 1.0, YMax: 10.5, YMin: 4.5 };
        var paramData = {"dataViewID":12, "filter":"", extent : {"XMax": 1.0, "XMin": 1.0, "YMax": 10.5, "YMin": 4.5} };
        $.ajax({
            url: serviceurl + 'GetStores',
            type: 'POST',
            contentType: "application/json",
            dataType: "json",
            data: JSON.stringify(paramData),
            success: function (result) {
                alert(result);                    
            },
            error: function (xhr) {
                alert(xhr);
            }
        });
于 2012-06-04T09:34:41.947 回答