2013-07-18 41 views
1

我有一個動態構建表單,從文本文件buildt,所以我不知道變量的名稱提前。我已經序列化的形式和值以JSON字符串:Deserialise 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

如果您執行'data:$(「form」)。serialize(),'它應該可以作爲任何其他表單數據。 – adeneo

+0

查看http://stackoverflow.com/questions/6992585/jquery-deserialize-form – MiRaIT

+0

如果我這樣做:$(document).on(「click」,「#btnsubmit」,function(){.ajax({ URL: 「/首頁/ RiskScore」, 類型: 「後」, 數據:$( 「形式」)序列化(), 成功:函數(結果){ } 它發送空到我的HomeController的 –

回答

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財產。

+0

見我的編輯,你需要對ajax請求做一個小改動 – MrCode

+1

當從data:{「testData」:$(「form」)。serialize()}改變爲:data:{$(「form 「).serialize()},我得到了錯誤:(:預計) –

+0

糟糕,我的錯誤,你需要刪除{},以及我的編輯.... – MrCode

0

您可以使用serializeArray方法獲取表單值作爲名稱 - 值對:

var nameValues = $("form").serializeArray(); 
for(var i = 0; i < nameValues.length; i++){ 
    console.log(nameValues[i].name); 
    console.log(nameValues[i].value); 
}