【发布时间】:2012-10-17 08:12:09
【问题描述】:
我正在使用 jQuery 1.7.1、$.ajax、Javascript、JSON 和 ASP.NET,但遇到了一些问题。将表单提交到 ASP.NET PageMethod 时,并非所有表单域都被序列化或为空。当我调试代码时,没有任何问题,所以也许你可以帮助我。
我在 javascript 中提交这样的表单
function SaveFormData() {
var fields = $("form").serializeArray();
var myData = { 'projectId': projectId, 'fields': fields };
myData = JSON.stringify(myData);
$.ajax({
type: "POST",
url: "/w2/AspNetPage.aspx/SaveForm",
contentType: "application/json; charset=utf-8",
timeout: (1000 * 60 * 10),
data: (myData),
dataType: "json",
success: function () {
alert('done');
},
error: function () {
alert('error');
}
});
}
我的 AspNetPage.aspx 包含 webmethod SaveForm:
[WebMethod]
public static string SaveForm(int projectId, field[] fields) {
// do the processing here
}
为了读取和处理表单数据,我使用了在 javascript/JSON 和 ASP.NET 之间进行序列化所需的类字段。
public class field {
public string name { get; set; }
public string value { get; set; }
}
我的问题是,有时并非所有表单域都已发布,或者是空的。我无法通过调试找到问题,所以也许你可以帮助我解决这个问题。请记住,表单可以有数百个表单域。
我还想知道我现在使用的代码是否是线程安全的,也许我必须处理与现在不同的表单数据。
请帮忙
【问题讨论】:
-
有时缺少哪些字段:服务器还是客户端?
-
问题解决了!,我使用了一个静态字段来存储我的字段[],这非常危险,所以我现在有了一个没有静态内容的新解决方案。 jQuery 和 SerializeForm 效果很好!那里没有问题。使用静态字段/属性来处理表单数据是我的错误