【问题标题】:How to deserialize in C# something that was serialized in JQuery?如何在 C# 中反序列化在 JQuery 中序列化的内容?
【发布时间】:2012-12-07 15:52:13
【问题描述】:

。 .

我已经有一段时间没有这样做了,我正在努力摆脱锈迹。

我正在尝试使用 VS2010 在 ASP.NET 中设置 AJAX 结构。

我有一个看起来像这样的 JQuery 表单提交(为了示例目的大大简化了):

function FormSubmit () {
    $.post('SomeHandler.asmx/SomeFunction', 
        $("#form1").serialize(), 
        function(data) {some data handler}
    );
}

我的“SomeHandler.asmx/SomeFunction”是一个 C# 函数,它接受我的表单数据并对其进行处理。

据我所知,SomeHandler.asmx 假定 XML 反序列化,但 JQuery 将其序列化为 HTML 编码字符串,而不是 XML。

我想打个比方,一边说英语,另一边期待听到法语。

我该如何解决这个问题? (例如,假设我的表单有一个文本字段——我们称之为“txtField”和一个下拉列表——我们称之为“lstDropDown”。)

提前感谢您的帮助!

【问题讨论】:

  • 那么你到底想做什么?只是在你的代码后面调用一个方法?
  • 差不多,但不是调用我关心的方法,而是传递数据。
  • 试试这个 $.ajax({ type: 'POST', url: 'SomeHandler.asmx/SomeFunction', data: $("#form1").serialize(), dataType: 'xml' });
  • 好的,是的,我支持你——让我来解决这个问题,看看会发生什么。

标签: c# asp.net jquery serialization deserialization


【解决方案1】:

在您的 asmx 文件中,确保您在接受和响应 json 的 Web 方法上使用以下属性标志:

[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string SomeWebMethod() 
{
  //blah
}

另外,请确保 Web 服务类具有以下属性标志:

[System.Web.Script.Services.ScriptService]
public class MyWebService : System.Web.Services.WebService
{
...
}

最后一件事:如果您在客户端序列化数据,则需要使用以下 ajax 设置:

 $.ajaxSetup({ contentType: "application/json; charset=utf-8" });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 2010-10-18
    • 1970-01-01
    • 2021-01-11
    • 2017-12-26
    • 1970-01-01
    • 2010-11-25
    相关资源
    最近更新 更多