簡體   English   中英

反序列化jQuery序列化表格

[英]Deserialize jQuery Serialized Form

我正在嘗試將表單輸入傳遞到WebMethod中並執行某些操作。 我使用jQuery Serilize

<script type="text/javascript">
        $.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");
        }  
    </script>

在目標WebMethod中,我想反序列化通過的對象。

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

}

我試圖使用Javascriptserilizer類。 但我沒有成功。 現在如何使用此對象? 我想使用這種方式來更簡單地使用jQuery AJAX(例如,將表單輸入傳遞給WebService並將其插入數據庫中)。 由於我要執行的操作是這樣的嗎? 歡迎您提出建議,提示。

更新:

如何將序列化JS對象映射到C#實體對象? 這是好方法嗎? 還是存在更好的方法? 如果是,請給我一些信息

我建議您使用強類型。 因此,定義一個包含所有必要屬性的類:

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

然后讓您的網絡方法使用此對象:

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

屬性名稱必須與您要在AJAX請求中序列化的輸入字段名稱匹配。

也許您可以嘗試以下方法:

JavaScriptSerializer JsTool = new JavaScriptSerializer();

var listOfObjs = JsTool.Deserialize<List<YourDataType>>(bject);

希望能幫助到你!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM