2012-06-04 54 views
1

嗨,我有下一个WCF服务。Jquery(ajax请求)到WCF。 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调用该服务调用,但所有的参数没有得到任何价值。我做错了什么?

回答

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); 
      } 
     }); 
+0

我柴草有关数据类型: “JSON” –