我有一个aspx.net
页面,其中包含大型表单以添加订单
此页面包含一个包含许多订单行的表格
每个订单行,有20个表单字段和5个隐藏字段。
有一个打印按钮可以打印订单,但在此之前它必须先保存它。
我的问题是,当我使用$("form").serializeArray()
时,数组是空的1到1.000.000倍
我使用哪种浏览器并不重要。
这让我很疯狂,因为很多用户都在叫我解决这个问题a.s.a.p.
我不知道从哪里开始调试。
serializeArray()
吗?WebMethod
需要一些额外的属性?这是我的打印按钮
<input type='button' title='Print' onclick='PrintOrder(true)' />
function PrintOrder(autosave) {
if (autosave) {
// save my order and call a callback function after it's completed
AutoSaveForm(function () {
PrintOrder(false);
});
} else {
// show my pdf page
window.open('printorder.pdf');
return;
}
}
var inAutoSaveForm = false;
// this function is needed to autosave my order
// fn is a callback function when it's successfull done.
function AutoSaveForm(fn) {
if (!inAutoSaveForm) {
// serializeArray to post my form by the ajax function
var fields = $("form").serializeArray();
// json format
var myData = {
'orderId': orderId,
'fields': fields
};
myData = JSON.stringify(myData);
ShowLoader();
$.ajax({
type: "POST",
url: "/Order.aspx/AutoSave",
contentType: "application/json; charset=utf-8",
timeout: (1000 * 60 * 10),
data: myData,
dataType: "json",
success: function () {
setTimeout(function () {
fn.call();
}, 25);
},
error: function (x, t, m) {
alert("Error, please try again later.\n\n" + t);
},
complete: function (msg) {
// .. do nothing yet
}
});
inAutoSaveForm = true;
} else {
fn.call();
}
}
这是我保存订单的.NET代码 也许我必须为WebMethod添加一些属性?
[WebMethod]
public static string VerwerkForm(field[] fields) {
// do the magic
return "ok";
}
public class field {
public string name { get; set; }
public string value { get; set; }
}