2011-10-07 105 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