使用以下脚本:
$("#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"
}
]
答案 0 :(得分:1)
var data = '{"0":[{"old_id":" + $(this).val() + '"},{"old_id":"' + new_id + '"}]}';
通过ajax POST发送,并使用DataContractJsonSerializer或FlexJson
进行解析结果将如下所示:
{
"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向服务器发送数据的详细信息。