2013-07-10 20 views
1

以下jQuery代碼:

$.param({           
        Parts: [{ hasLabel: "label", hasType: "type", hasIndex : 1 }], 
        LastKey : "LastKey", 
        Term : "Term"        
     }) 

給出了下面的輸出:

"Parts%5B0%5D%5BhasLabel%5D=label&Parts%5B0%5D%5BhasType%5D=type&Parts%5B0%5D%5BhasIndex%5D=1&LastKey=LastKey&Term=Term" 

其解碼爲(使用decodeURI( )):

"Parts[0][hasLabel]=label&Parts[0][hasType]=type&Parts[0][hasIndex]=0&LastKey=LastKey&Term=Term" 

但是,MVC中的默認模型綁定程序需要以下內容:

"Parts[0].hasLabel=label&Parts[0].hasType=type&Parts[0].hasIndex=0&LastKey=LastKey&Term=Term" 

我在尋找一個Javascript正則表達式來要挾編碼的字符串轉換成(仍然編碼)字符串,而是一個解碼正確的模型約束力的公約。

回答

2

下應該做的伎倆:

var params = "Parts[0][hasLabel]=label&Parts[0][hasType]=type&Parts[0][hasIndex]=0&LastKey=LastKey&Term=Term"; 
var mvcParams = params.replace(/\[([^0-9]+)\]/g,'.$1'); 

編輯:

要對編碼字符串工作執行以下操作:

var params = "Parts%5B0%5D%5BhasLabel%5D=label&Parts%5B0%5D%5BhasType%5D=type&Parts%5B0%5D%5BhasIndex%5D=1&LastKey=LastKey&Term=Term"; 
var mvcParams = params.replace(/%5b([^0-9]+)%5d/gi,'.$1'); 
+0

CR @ P,真抱歉,我剛認識我實際上需要它來處理編碼的字符串,也就是'encodeURI(「Parts [0] [hasLabel] = label&Parts [0] [hasType] = type&Parts [0] [hasIndex] = 0和LastKey = LastKey&Term = Term的返回值「)'。 'decodeURI(result)==「Parts [0] .hasLabel = label&Parts [0] .hasType = type&Parts [0] .hasIndex = 0&LastKey = LastKey&Term = Term'' – parliament

+0

I'我剛剛測試它,它的工作原理!怎麼運行的?與你的表達,不應該被[]之間的所有內容取代? '。$ 1'的含義(定義的鏈接將被優先考慮)... – ESt3b4n

+0

@parliament:如果您在上面的變量mvcParams上調用encodeURI,您將獲得期望的結果 –

相關問題