【问题标题】:Is it possible to post an entire Javascript object via a Jquery Ajax post to a .Net webservice?是否可以通过 Jquery Ajax 将整个 Javascript 对象发布到 .Net 网络服务?
【发布时间】:2011-04-11 08:08:50
【问题描述】:

在当前情况下,当我们通过 Jquery Ajax post 从网页发布数据到 web 服务时,我们构建了一个带有两个或三个参数的 Json 字符串,并且我们有一个带有接受相同(命名)参数的方法的 web 服务.

但是现在我的 javascript 中有一个具有 10 个属性的对象,我想知道是否可以将整个对象发布到我的网络服务。

我尝试过发布对象并在 web 服务中有一个类型为“对象”的参数,但这不起作用。

【问题讨论】:

  • 根据对象的结构和内容,这应该没问题。结构是什么?
  • 它是一个有 10 个属性的对象(所有字符串)

标签: c# jquery asp.net web-services


【解决方案1】:

是的,这是可能的。您需要创建一个类并使用DataContract 属性使其可序列化。然后,您使用 DataMember 标记要序列化的类的成员。这样的事情会做:

[DataContract(Namespace = "http://www.yournamespace/")]
public class MyObject
{
    [DataMember]
    public long Id { get; set; }

    [DataMember]
    public String Name { get; set; }
}

然后在您的 WCF 服务中:

    [OperationContract]
    [WebInvoke(Method = "POST", RequestFormat=WebMessageFormat.Json)]
    public bool HandleObject(MyObject myObject)
    {

    }

在客户端代码中,执行如下操作:

    $.ajax({ url: url,
        type: "POST",
        data: '{"myObject":' + json2string(myObject) + '}',
        contentType: "application/json",
        dataType: "json",
        success: function(data) {}
    });

【讨论】:

  • 我会将什么作为数据发送到服务?对象,我的对象的 JSON.Stringify 版本?你能帮我提供调用代码吗?
  • 顺便说一句,我们使用的是 webservices 而不是 wcf,这会影响答案吗?
  • 您需要对对象进行字符串化。请参阅我编辑的答案。经典 Web 服务的序列化部分也是相同的。不过所需的属性会有所不同。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-18
  • 2013-07-28
  • 2014-05-02
  • 2013-02-28
  • 2023-03-17
相关资源
最近更新 更多