我有一个动态构建表单,从文本文件构建,所以我事先不知道变量的名称。我已将表单和值序列化为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) {
}
现在我想反序列化它,以便我可以在下一页显示每个值的值和名称。我尝试了很多不同的代码变体,但没有成功。 希望你能帮忙!
由于
答案 0 :(得分: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
属性。
答案 1 :(得分:0)
您可以使用serializeArray
方法将表单值作为名称 - 值对进行处理:
var nameValues = $("form").serializeArray();
for(var i = 0; i < nameValues.length; i++){
console.log(nameValues[i].name);
console.log(nameValues[i].value);
}