1

我有一个动态构建表单,从文本文件构建,所以我事先不知道变量的名称。我已将表单和值序列化为 json 字符串:

"PersonId=aasd&Gender=Kvinna&Education=sd&RelativeDementia=Ja&Apoe4=Vet+ej&
SystolicBT=asd&HypertoniaTreatment=Nej&FPColesterol=asd&PersonLength=asdas
&PersonWeight=dasd&PersonBMI=asd&AbdominalCircumference=adsasd
&KnownDiabetesMellitus=Ja&HadTIAStroke=Ja
&KnownHeartDisease=Ja
&IsCurrentlySmoking=Ja&IsExperiencingStress=Nej
&KnownDepression=Ja%2C+tidigare+behandlad&PhysicallyActive=Ja" 

用这个方法:

$(document).on("click", "#btnsubmit", function() {
    $.ajax({
        url: "/Home/RiskScore",
        type: "post",
        data: { "testData": $("form").serialize() },
        success: function(result) {
        }

现在我想反序列化它,以便我可以在下一页上显示每个值的值和名称。我尝试了很多不同的代码变体,但都没有成功。希望你能帮忙!

谢谢

4

2 回答 2

1

您没有 JSON 数据,它是标准的 URL 编码符号。如果您想在服务器端访问它,您可以遍历发布数据。ASP.NET 自动将此格式解析到Request.Form集合中。

foreach(string key in Request.Form.AllKeys)
    Response.Write(Request.Form[key]);

您还需要将 AJAX 更改为:

data: $("form").serialize(),

这样做的原因是因为您不需要testData标识符,您只需要原始 POST 数据作为data属性。

于 2013-07-18T07:03:43.413 回答
0

您可以使用serializeArray方法来获取表单值作为名称-值对:

var nameValues = $("form").serializeArray();
for(var i = 0; i < nameValues.length; i++){
    console.log(nameValues[i].name);
    console.log(nameValues[i].value);
}
于 2013-07-18T07:00:14.910 回答