将复杂类型作为数据传递给jquery ajax post

我的数据模型类如下所示:

 [DataContract] public class Order {[DataMember] public string Id {get; 组;  } [DataMember] public string AdditionalInstructions {get; 组;  } [DataMember] public double TotalAmount {get; 组;  } [DataMember] public DateTime OrderDate {get; 组;  } [DataMember] public Customer Customer {get; 组;  } [DataMember] public OrderedProduct OrderedProduct {get; 组; 公共类OrderedProduct {[DataMember] public int Id {get;} [DataContract] 组;  } [DataMember] public string Name {get; 组;  } [DataMember] public double Price {get; 组;  } [DataMember] public int Quantity {get; 组;  } [DataContract] public class Customer {[DataMember] public string FirstName {get; 组;  } [DataMember] public string LastName {get; 组;  }} 

我的WCF运营合同是:

 [WebInvoke(ResponseFormat = WebMessageFormat.Json,BodyStyle = WebMessageBodyStyle.Bare)]
 [OperationContract的]
 string SaveOrder(订单);

我的ajax调用看起来像:

函数SaveOrder(){
     var orderJson = {
         AdditionalInstructions:$(“span:first”)。text(),
        客户:{FirstName:$(“#firstName”)。val(),LastName:$(“#lastName”)。val()},
         OrderedProduct:{Id:$(“#productList”)。val(),数量:$(“#quantity”)。val()}
         };

     //发布到您的Web服务或页面
     $就({
        键入:“POST”,// GET或POST或PUT或DELETE动词
         url:“http:// localhost:14805 / OrderService.svc / SaveOrder”,//服务的位置
         data:orderJson,//数据发送到服务器
         contentType:“application / json; charset = utf-8”,//发送到服务器的内容类型
         dataType:“json”,//来自服务器的预期数据格式
         processdata:false,// True或False
         success:function(result){//在成功的服务调用上
            警报(结果);
         },
         error:function(result){//当Service调用失败时
             alert('服务调用失败:'+ result.status +''+ result.statusText);
         }
     });
 }

但是当我拨打这个电话时,我得到一个400:错误的请求状态。 这就是Google Chrome中标题的样子:

请求URL:http:// localhost:14805 / OrderService.svc / SaveOrder
请求方法:POST
状态代码:400错误请求
请求标题
接受:application / json,text / javascript,* / *;  Q = 0.01
接收字符集:ISO-8859-1,utf-8; Q = 0.7,*; Q = 0.3
接受编码:gzip,放气,SDCH
接受语言:EN-US,EN; Q = 0.8
连接:保持活跃
内容长度:165
内容类型:应用/ JSON; 字符集= UTF-8
主持人:本地主机:14805
产地:HTTP://本地主机:14805
引用站点:HTTP://本地主机:14805 / index.html的
 User-Agent:Mozilla / 5.0(Windows; U; Windows NT 6.1; en-US)AppleWebKit / 534.16(KHTML,与Gecko一样)Chrome / 10.0.648.127 Safari / 534.16
 X-要求 - 由于:XMLHttpRequest的
请求有效负载
 AdditionalInstructions = DBL点击这里+ +至+加+笔记!客服%5BFirstName%5D = ASDF客服%5BLastName%5D = FDSA&OrderedProduct%5BId%5D = 3&OrderedProduct%5BQuantity%5D = 12
响应标题
缓存控制:私人
连接:关闭
内容长度:1647
内容类型:text / html的
日期:星期一,2011年3月7日19:14:57 GMT
服务器:ASP.NET Development Server / 10.0.0.0
 X-ASPNET-版本:4.0.30319

请让我知道如何纠正这个问题。

谢谢,阿伦

解决这个问题有两个问题。 1.我服务本身的一些错误(这是我的错)2。我对orderJson对象做了JSON.stringify()。

函数SaveOrder(){
     var orderJson = {
         AdditionalInstructions:$(“span:first”)。text(),
        客户:{
             FirstName:$(“#firstName”)。val(),
             LastName:$(“#lastName”)。val()
         },
         OrderedProduct:{
             Id:$(“#productList”)。val(),
            数量:$(“#quantity”)。val()
         }
     };

     //发布到您的Web服务或页面
     $就({
        键入:“POST”,// GET或POST或PUT或DELETE动词
         url:“http:// localhost:14805 / OrderService.svc / SaveOrder”,//服务的位置
         data:JSON.stringify(orderJson),//发送到服务器的数据
         contentType:“application / json; charset = utf-8”,//发送到服务器的内容类型
         dataType:“json”,//来自服务器的预期数据格式
         processdata:false,// True或False
         success:function(result){//在成功的服务调用上
             RedirectToMvcApp(结果);
         },
        错误:function(请求,错误){//当服务调用失败时
             alert('服务调用失败:'+ request.status +''+ request.statusText);
         }
     });
 }