反序列化jQuery序列化表单

我正在尝试将表单输入传递给WebMethod并执行某些操作。 我使用了jQuery Serilize 。

 $.fn.serializeNoViewState = function () { return this.find("input,textarea,select,hidden") .not("[type=hidden][name^=__]") .serialize(); } $(function () { $("#Button1").click(function (e) { var res = $("#myform").serializeNoViewState(); var jsonText = JSON.stringify({ bject: res }); $.ajax({ type: "POST", url: "Default.aspx/Test", data: jsonText, contentType: "application/json; charset=utf-8", dataType: "json", success: function (msg) { // alert("asd"); }, error: AjaxFailed }); }); }); function AjaxFailed(result) { alert("Failed"); }  

在目标WebMethod我想反序列化我传递的对象。

 [WebMethod()] public static bool test(string bject) { JavaScriptSerializer JsTool = new JavaScriptSerializer(); } 

我试图使用Javascriptserilizer类。 但我没有成功。 现在我该如何使用这个对象? 我想用这种方式更简单地使用jQuery AJAX(例如,将表单输入传递给WebService并将其插入到数据库中)。 由于我想要做的动作是这样的吗? 欢迎您的建议,提示。

更新:

如何将Serialized JS对象映射到我的C#实体对象? 这种方式是好方法吗? 还是有更好的方法存在? 如果是,请给我一些信息

我建议你使用强类型。 因此,定义一个包含所有必要属性的类:

 public class MyModel { public string Prop1 { get; set; } public string Prop2 { get; set; } } 

然后让您的Web方法使用此对象:

 [WebMethod()] public static bool test(MyModel bject) { ... } 

属性的名称必须与您在AJAX请求中序列化的输入字段名称匹配。

也许你可以试试这个:

 JavaScriptSerializer JsTool = new JavaScriptSerializer(); var listOfObjs = JsTool.Deserialize>(bject); 

希望能帮助到你!