从客户端传递对象并从服务器端访问 - Knockoutjs

时间:2014-09-16 04:39:10

标签: jquery ajax knockout.js

我正在使用Knockout基础知识。 我通过调用WebForm3.aspx / saveData将数据从客户端传递到服务器端。为简单起见,我按数据传递数据(txtName,txtEmail,txtAge)。

$.ajax({
                type: "POST",
                url: "WebForm3.aspx/saveData",
                data: "{name:'" + txtName + "',email:'" + txtEmail + "',age:'" + txtAge + "'}",
                contentType: "application/json; charset=utf-8",
                datatype: "jsondata",
                async: "true",
                success: function (response) {
                    $(".errMsg ul").remove();
                    var myObject = eval('(' + response.d + ')');
                    if (myObject > 0) {
                        bindData();
                        $(".errMsg").append("<ul><li>Data saved successfully</li></ul>");

                    }
                    else {
                        $(".errMsg").append("<ul><li>Opppps something went wrong.</li></ul>");
                    }
                    $(".errMsg").show("slow");
                    clear();
                },

所以我可以在我的服务器端代码中访问这些数据,如下所示。

 [WebMethod]
        public static int saveData(string name, string email, string age)
        {

    }

现在时间到了重构我的代码并且不希望按数据传递数据。作为替代方案,我想传递一个包含所有属性的对象。 有人可以建议如何传递对象并从服务器端访问它。

2 个答案:

答案 0 :(得分:1)

我没有在这里看到任何淘汰代码,但似乎你正在使用jquery的ajax方法,它应该接受'data'字段的普通javascript对象,这样你就不必编写一个凌乱的长连接字符串(“数据的数据“)

http://api.jquery.com/jquery.ajax/#jQuery-ajax-settings

答案 1 :(得分:1)

您可以使用jquery serialize()方法获取某些形式的数据对象,如

<form id="myForm">
<input type="text" name="name" />
<input type="text" name="email" />
<input type="text" name="age" />
</form>

通过

获取表单数据

var postData = $("#myForm").serialize();

使用以下选项

调用ajax
 data:postData