通过javascript将复杂对象传递给.Net服务

时间:2011-03-18 21:25:24

标签: c# javascript jquery soap asmx

我正在试图弄清楚如何通过javascript将复杂对象发送到我的C#webservice。

这里是xml字符串:

<?xml version="1.0" encoding=utf-8?><soap:Envelope xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body>
<SaveResponse xmlns="http://tempuri.org/">
  <RL>
    <response_entries>
      <ResponseEntry>
        <response_id>string</response_id>
        <account_id>string</account_id>
        <organization_id>string</organization_id>
        <form_header_id>string</form_header_id>
        <status>string</status>
        <field0>string</field0>
        <field1>string</field1>
        <field99>string</field99>
      </ResponseEntry>
      <ResponseEntry>
        <response_id>string</response_id>
        <account_id>string</account_id>
        <organization_id>string</organization_id>
        <form_header_id>string</form_header_id>
        <status>string</status>
        <field0>string</field0>
        <field1>string</field1>
        <field99>string</field99>
      </ResponseEntry>
    </response_entries>        
  </RL>
</SaveResponse>

我正在尝试发送的示例:

enter image description here

1 个答案:

答案 0 :(得分:3)

正如Marc所说,在javascript中使用JSON非常容易,所以让我们这样做:

首先创建一个Web服务:

[WebMethod]
public string DoStuff(string json)
{
    var js = new JavaScriptSerializer();
    MyType input = js.Deserialize<MyType>(json);
    return js.Serialize(DoStuff(input));
}

该输入是一个json字符串,JavaScriptSerializer很容易将其转换为.NET对象。 DoStuff(MyType)是一种您定义的方法,它可以获取您需要的任何输入并使用它来完成任务。

现在是时候消耗了(我在这里使用GET,但是如果它是活动的你应该POST):

$.get("TestService.asmx/DoStuff", { json: jsonString })
    .success(function (data) { 
        // code goes here!
    });

使用json2.js从javascript对象

序列化jsonString