2011-03-18 36 views
1

解析POST數據一點背景:我使用其產生沿以下類似jQuery的UI可排序serialize方法:與符號

category[]=Value & One&category[]=ValueTwo&category[]=ValueThree

我然後使Ajax請求爲關發送數據(POST)到Web服務。

我目前使用的HttpUtility.ParseQueryString方法將數據推到一個集合,但與&出現問題,因爲它會導致:「值」(「&一個」被切斷)。

這似乎是它應該是非常容易解決,但由於某些原因,我畫一個空白。什麼是保存價值的「價值&一號」的最佳方式?

編輯:添加代碼示例:

Dim data As String = "category[]=Value & One&category[]=ValueTwo&category[]=ValueThree" 
    Dim httpPOSTData As System.Collections.Specialized.NameValueCollection 

    httpPOSTData = HttpUtility.ParseQueryString(data) 

    'Result: "Value ,ValueTwo,ValueThree" 
    'Desired Result: "Value & One,ValueTwo,ValueThree" 

使用Javascript:

serializedSortOrder = $('#Categories').sortable('serialize',{ 
     attribute:'data-category', 
     key:'category[]', 
     expression: /(.*)/ 
     }); 

回答

2

jQuery UI的壞。 jquery.ui.sortable.js的411線:

if(res) str.push((o.key || res[1]+'[]')+'='+(o.key && o.expression ? res[1] : res[2])); 

哎呀,有人忘了encodeURIComponent()鍵和值部分卸入字符串之前。

+0

沒錯,這是我的問題。看起來我將不得不爲我的頁面上的可排序元素推出自己的序列化。 – 2011-03-18 01:31:02

1

它是發佈數據的問題,&應%編碼(到%26)。和空間應編碼爲「+」:

category[]=Value+%26+One&category[]=ValueTwo&category[]=ValueThree 
+0

使用encodeURIComponent方法(x)的,用於編碼每個參數。在JavaScript中是全局對象的內置方法(可以直接使用)。 – ysdx 2011-03-18 00:56:33