将复杂类型作为数据传递给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); } }); }