ajax 发送复杂数据类型,传递复杂类型的数据,jQuery的AJAX发布

[DataContract]

public class Order

{

[DataMember]

public string Id { get; set; }

[DataMember]

public string AdditionalInstructions { get; set; }

[DataMember]

public double TotalAmount { get; set; }

[DataMember]

public DateTime OrderDate { get; set; }

[DataMember]

public Customer Customer { get; set; }

[DataMember]

public OrderedProduct OrderedProduct { get; set; }

}

[DataContract]

public class OrderedProduct

{

[DataMember]

public int Id { get; set; }

[DataMember]

public string Name { get; set; }

[DataMember]

public double Price { get; set; }

[DataMember]

public int Quantity { get; set; }

}

[DataContract]

public class Customer

{

[DataMember]

public string FirstName { get; set; }

[DataMember]

public string LastName { get; set; }

}

我的WCF操作契约是:

[WebInvoke(ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]

[OperationContract]

string SaveOrder(Order order);

我的Ajax调用是这样的:

function SaveOrder() {

var orderJson = {

AdditionalInstructions: $("span:first").text(),

Customer: { FirstName: $("#firstName").val(), LastName: $("#lastName").val() },

OrderedProduct: { Id: $("#productList").val(), Quantity: $("#quantity").val() }

};

// the post to your webservice or page

$.ajax({

type: "POST", //GET or POST or PUT or DELETE verb

url: "http://localhost:14805/OrderService.svc/SaveOrder", // Location of the service

data: orderJson, //Data sent to server

contentType: "application/json; charset=utf-8", // content type sent to server

dataType: "json", //Expected data format from server

processdata: false, //True or False

success: function (result) {//On Successfull service call

alert(result);

},

error: function (result) {// When Service call fails

alert('Service call failed: ' + result.status + ' ' + result.statusText);

}

});

}

但是,当我打这个电话,我得到一个400:错误的请求状态。这是标题看起来像谷歌浏览器:

Request URL:http://localhost:14805/OrderService.svc/SaveOrder

Request Method:POST

Status Code:400 Bad Request

Request Headers

Accept:application/json, text/javascript, */*; q=0.01

Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.3

Accept-Encoding:gzip,deflate,sdch

Accept-Language:en-US,en;q=0.8

Connection:keep-alive

Content-Length:165

Content-Type:application/json; charset=UTF-8

Host:localhost:14805

Origin:http://localhost:14805

Referer:http://localhost:14805/index.html

User-Agent:Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.127 Safari/534.16

X-Requested-With:XMLHttpRequest

Request Payload

AdditionalInstructions=dbl-click+here+to+add+notes!&Customer%5BFirstName%5D=asdf&Customer%5BLastName%5D=fdsa&OrderedProduct%5BId%5D=3&OrderedProduct%5BQuantity%5D=12

Response Headers

Cache-Control:private

Connection:Close

Content-Length:1647

Content-Type:text/html

Date:Mon, 07 Mar 2011 19:14:57 GMT

Server:ASP.NET Development Server/10.0.0.0

X-AspNet-Version:4.0.30319

请让我知道我可以纠正这一点。

感谢, 阿伦

2011-03-07

Arun

+0

作为一个说明:您的JSON是无效的。你还需要一个命名数组传递到WCF框架中(所以将所有东西包装在{'Order'中:{...}} –

2011-03-07 19:26:53

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值