【问题标题】:Pass object to WCF service using JQuery使用 JQuery 将对象传递给 WCF 服务
【发布时间】:2010-10-29 08:31:14
【问题描述】:

我知道这里有问题问完全相同的问题,但是尽管我阅读了它们,但我仍然遗漏了一些东西,希望你能提供帮助!

很简单,使用VS添加的WCF模板!

界面:

[OperationContract]
[WebInvoke(Method = "POST",
    ResponseFormat = WebMessageFormat.Json,
    RequestFormat= WebMessageFormat.Json,
    BodyStyle = WebMessageBodyStyle.Wrapped)]
CompositeType GetDataUsingDataContract(CompositeType composite);

实施:

public CompositeType GetDataUsingDataContract(CompositeType composite){
  if (composite == null)
  {
      throw new ArgumentNullException("composite");
  }
  if (composite.BoolValue)
  {
      composite.StringValue += "Suffix";
  }
  return composite;  

}

Javascript:

$.ajax({
  type: "POST",
  url: "http://localhost:1545/Service1.svc/GetDataUsingDataContract",
  data: JSON.stringify(compType),
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  processdata: true,
  success: function (msg) {
      $("#txtTest").val(message.BoolValue + " : " + message.StringValue);
  },
  error: function (xhr, errorMsg, thrown) {
      $("#error").html(xhr.responseText);
}

});

我得到的错误是: 服务器在处理请求时遇到错误。异常消息是“值不能为空。参数名称:composite'。

所以这个值没有被传递,当它到达 WCF 服务时它为空。

*注意:我尝试过调用接受字符串并返回复合类型的方法,效果很好*

提前感谢您的帮助

【问题讨论】:

  • 我也有同样的问题..你有解决方案吗?
  • 如果你取消 if (composite.BoolValue) 你有同样的问题

标签: jquery wcf rest


【解决方案1】:

这里是如何构造 compType 以便JSON.stringify() 将产生服务所期望的:

var compType = { composite: { StringValue: "MyString", BoolValue: true } };

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-20
    • 1970-01-01
    相关资源
    最近更新 更多