javascript:传递一个数组给WCF服务(c#)
本文关键字:数组 WCF 服务 一个 javascript | 更新日期: 2023-09-27 18:09:11
我正在尝试发送一个数组到wcf服务。
我的javascript:
var listoffice = new Array();
var office1 = { officeid : "1", officename : "Bat Cave" };
var office2 = { officeid : "2", officename : "Robin House" };
listoffice[0] = office1;
listoffice[1] = office2;
$.getJSON("ContactService.svc/createnewAwesomeoffice", { listoffice: listoffice }, function (data) {
...
});
服务如下:
public struct officetoadd
{
public string officeid;
public string officename;
}
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json)]
public void createnewAwesomeoffice(List<officetoadd> listoffice)
{
...
}
问题是listoffice(在服务中)总是为空。我错过什么了吗?
我认为你需要把RequestFormat以及在你的WebGetAttribute…另外,你可能想尝试把"officetoadd"变成一个类,并用DataContract和DataMember属性来装饰它。
[DataContract]
public class officetoadd
{
[DataMember]
public string officeid;
[DataMember]
public string officename;
}
[OperationContract]
[WebGet(RequestFormat - WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
public void createnewAwesomeoffice(List<officetoadd> listoffice)
{
...
}
好吧,我自己找到了解决办法。我认为把它写在这里是相关的,所以它可能会帮助其他人。
我只需要将数组转换为JSON:
var arrayjson = JSON.stringify(listoffice);
然后传递给WCF服务:
$.getJSON("ContactService.svc/createnewAwesomeoffice", { listoffice: arrayjson }, function (data) {
...
});
注意: JSON对象现在是大多数现代web浏览器(IE 8 &上图)。