2011-10-07 17 views
1

我找不到具有類似問題的線程是非常尷尬的...... 那麼,讓我們假設我有一個帶複選框的標準HTML表單(將被解析爲PHP中的數組),注意括號中的name屬性:如何在jQuery中序列化數組的複選框

<form class="myForm" action="evaluate.php" method="get"> 
    <input type="text" name="name" value="" placeholder="Your name"/> 
    <input type="checkbox" name="facts[]" value="1" id="fact-1"/><label for="fact-1">Fact 1</label> 
    <input type="checkbox" name="facts[]" value="2" id="fact-2"/><label for="fact-2">Fact 2</label> 
    ... 
</form> 

,現在我想jQuery的序列化形式與內容:

alert($('.myForm').serialize()); 

預期的結果會是這樣像這樣:

name=MyName&facts[]=1&facts=[]=2&... 

但遺憾的是它沒有,因爲括號「[]」被轉義:

name=MyName&facts%5B%5D=1&facts=%5B%5D=2&... 

有沒有人,除了寫一個自己的序列化腳本,這個問題的解決方案?

+1

OK,我發現一個線程在談論這裏:http://stackoverflow.com/questions/304518/how- to-send-serialize-form-data-using-jquery-if-the-input-element-is-an-an數組,但是沒有可接受的解決方案。 「serialize()。replace('%5B%5D','[]')」我覺得有點冒險。 – kernel

+0

請花些時間閱讀[faq]。如果沒有適合你的答案,你只需要添加一個賞金。我知道你是新人,沒有代表分配獎金,但回答幾個問題並獲得開設小獎金所需的50個代表真的不是那麼難。 – zzzzBov

+0

k我會聽從你的建議。 – kernel

回答

3

或嘗試:

alert(decodeURI('MyName&facts%5B%5D=1&facts=%5B%5D=2&')); 

將解碼所有的轉義字符,包括[]

+0

適合我!謝謝Vaibhav – kernel

+0

歡迎!如果你發現我的答案有效。然後將其標記爲接受。 –

+0

這是最便利的js功能之一。 – lewsid