天天看點

如何用Ajax傳一個數組資料

1

2

3

<code>php接收多個同名複選框資訊不像asp那樣自動轉換成為數組,這給使用帶來了一定不便。但是還是有解決辦法的,就是利用javascript做一下預處 理。多個同名複選框在javascript中還是以數組的形式存在的,是以在表單送出之前可以利用javascript把複選框中的資訊組合成一個字元數 組指派給表單中的隐藏元素,然後用php中的</code><code>explode</code><code>函數解析此數組,這樣就可以實作複選框資訊的傳遞了。下面舉例說明。</code>

<code>假設有這樣一個表單:</code>

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

<code>這個表單有四個名字都是item的複選框,當使用者單擊submit按鈕的時候,checker函數會被調用,并且如果checker傳回true表單 就被送出,傳回false表單就不會被送出。這裡checker函數就是我們要編寫的預處理函數。在html的header部分添加下面的 javascript:</code>

<code>function</code>

<code>checker()</code>

<code>{</code>

<code>    </code><code>form1.items.value =</code><code>""</code><code>;</code>

<code>    </code><code>if</code>

<code>( !form1.item.length )</code><code>// 隻有一個複選框,form1.item.length = undefined</code>

<code>    {</code>

<code>       </code><code>if</code>

<code>( form1.items.checked )</code>

<code>            form1.items.value = form1.item.value;</code>

<code>    }</code>

<code>   </code><code>else</code>

<code>       </code><code>for</code>

<code>( i = 0 ; i &lt; form1.item.length ; i++ )</code>

<code>        {</code>

<code>       </code><code>if</code>

<code>( form1.item(i).checked )</code><code>// 複選框中有選中的框</code>

<code>        {</code>

<code>            form1.items.value = form1.item(i).value;</code>

<code>               </code><code>for</code>

<code>( j = i + 1 ; j &lt; form1.item.length ; j++ )</code>

<code>            {</code>

<code>                   </code><code>if</code>

<code>( form1.item(j).checked )</code>

<code>                    {</code>

<code>                    form1.items.value +=</code><code>" "</code><code>;</code><code>//用空格做分割符</code>

<code>                    form1.items.value += form1.item(j).value;</code>

<code>                    }</code>

<code>            }</code>

<code>           </code><code>break</code><code>;</code>

<code>        }</code>

<code>        }</code>

<code>   </code><code>return</code>

<code>true;</code>

<code>}</code>

<code>這樣就可以把所有選中的複選框的value組合成為一個字元串數組,在myphp.php使用這樣的語句:</code>

<code>1  </code><code>$items</code>

<code>=</code><code>explode</code><code>(</code><code>" "</code><code>,</code><code>$http_post_vars</code><code>[</code><code>"items"</code><code>]);</code>

<code>就可以把這些選項分離出來成為數組。需要注意的是選項中的value不能包含分割符(這裡是空格)。</code>