(服务器端)的格式数据(客户端)

时间:2011-07-13 15:05:36

标签: javascript jquery .net asp.net vb.net

使用以下脚本:

$("#some_button").click(function() {

    var changed = [];

    $( 'input[id$="_0"]' ).each(function() {

        var new_id = this.id.replace( '_0', '_1' );

        if ( $(this).val() !== $( 'input#' + new_id ).val() ) {

            changed.push(new_id);
            // send back id, new value from _0, and old value from _1

        }

    });

    console.log(changed);

});

我需要将id_1中的旧值和_0中的新值发回给服务器。格式化这些数据的最佳方法是什么,以便我可以轻松地从服务器端提取数据,以便我可以轻松地通过电子邮件发送给某人,例如让他们知道哪些文本框已更改,旧值是什么,以及新值是什么< / p>

在服务器端,我使用的是.NET-3.5(VB)。

我知道如何发送数据bacl。以及如何通过电子邮件发送数据,我只是想知道如何在发送回来之前在客户端对数据进行最佳格式化。


我最多可以发送50套id,old和new值。很抱歉没有早点说清楚。


示例:

如何修改上面的脚本来生成它?

[
    {
        "id": "name_0",
        "new": "text",
        "old": "text"
    },
    {
        "id": "age_0",
        "new": "text",
        "old": "text"
    },
    {
        "id": "dept_0",
        "new": "text",
        "old": "text"
    }
]

3 个答案:

答案 0 :(得分:1)

var data = '{"0":[{"old_id":" + $(this).val() + '"},{"old_id":"' + new_id + '"}]}';

通过ajax POST发送,并使用DataContractJsonSerializerFlexJson

进行解析

结果将如下所示:

{
    "0": [
        {
            "old_id": "foo"
        },
        {
            "old_id": "bar"
        }
    ],
    "1": [
        {
            "old_id": "foo2"
        },
        {
            "old_id": "bar2"
        }
    ],
    "2": [
        {
            "old_id": "foo3"
        },
        {
            "old_id": "bar3"
        }
    ]
}

答案 1 :(得分:1)

在客户端:

changed.push(new_id)

代替

changed.push({id:new_id, new_val:$(new_id).val(), old_val:$(this).val()});

随后:

$.post(TARGET_URL, changed);

在服务器端:

using System.Web.Script.Serialization;
// ...
public class Change {
    public string id {get; set; }
    public string new_val {get; set; }
    public string old_val {get; set; }
}
List<Change> changes = new JavaScriptSerializer().Deserialize(data_string);

旧的回答,因为运送了许多物品而产生了阻碍。

如果您的数据足够短,只需在网址中对其进行编码即可。

var url = TARGET_URL + "?old_id="+escape(old_id)+"&new_id="+escape(new_id);

答案 2 :(得分:0)

JSON是一种非常好的,精益的数据交换格式。

这样的事情可能有用:

var changed = [];

$( 'input[id$="_0"]' ).each(function() {
    var thisItemChanges = { id: this.id, newid = this.id.replace('_0', '_1') };
    changed.push(thisItemChanges);
});

$.post('UrlToPostTo', changed,  function(serverResponse) { // do something with return from server });

另请参阅jQuery.post,了解有关使用javascript向服务器发送数据的详细信息。