我有一个WCF服务,它从客户端(jquery网页)发送字符串列表。当我用F5运行它时,wcf项目在visual studio中运行完美,一个窗口打开,我点击Invoke后看到了在Invoke.I下的list对象将在jquery中使用我的列表数据,所以我使用ajax来调用我的wcf服务,所有配置设置都是正确的。我正在使用abc
类,它有一个可靠的列表,我有一个函数数据,它将一些数据设置到该列表。这是我的服务合同和数据合同形式WCF(IService1.cs):
namespace kgms
{
[ServiceContract]
public interface IService1
{
[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, ResponseFormat = WebMessageFormat.Json)]
abc data(abc obj);
}
[DataContract]
public class abc {
[DataMember]
public List<string> sval { get; set; }
[DataMember]
public List<string> kval { get; set; }
}
}
这是我的数据功能信息(Service1.svc.cs):
namespace kgms
{
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service1 : IService1
{
public abc data(abc obj) {
obj.sval.Add("asd");
obj.sval.Add("sdf");
obj.kval.Add("example");
obj.kval.Add(":-)");
return obj;
}
}
}
我将从那个ajax调用访问:
$('#buton').click(function () {
Type = "POST";
Url = "http://compname/sil/Service1.svc/data";
ContentType = "application/json; charset=utf-8";
DataType = "json"; var ProcessData = true;
CallService();
});
function CallService() {
$.ajax({
type: Type,
url: Url,
data: Object,
contentType: ContentType,
dataType: DataType,
processdata: ProcessData,
success: function (msg) {
ServiceSucceeded(msg);
},
error: ServiceFailed
});
}
function ServiceFailed(result) {
alert("basarisiz");
alert('Service call failed: ' + result.status + '' + result.statusText);
Type = null; varUrl = null; Data = null; ContentType = null; DataType = null; ProcessData = null;
}
function ServiceSucceeded(result) {
alert("good");
}
});
我必须使用Data: Object
发送什么参数对象是示例,必须写入而不是Object。因为我的WCF函数正在使用abc类对象,我该怎么做。
答案 0 :(得分:1)
希望这对你有所帮助。
var abcCtor = function() {
this.sval = [];
this.kval = [];
}
var mainObj = function() {
this.abc = new abcCtor();
}
var abcObj = new mainObj();
abcObj.abc.sval.push('name');
abcObj.abc.sval.push('age');
abcObj.abc.kval.push('jhonatas');
abcObj.abc.kval.push('00');
var jsonValue = JSON.stringify(abcObj);
然后,将jsonValue传递给$ ajax的参数Data。
修改强>
简单做:
public abc data() {
obj.sval.Add("asd");
obj.sval.Add("sdf");
obj.kval.Add("example");
obj.kval.Add(":-)");
return obj;
}
并省略$ ajax
中的Data参数答案 1 :(得分:0)
嗨,请关注这篇文章,它会对你有所帮助 WCF REST Services Using Jquery AJAX