2012-08-05 72 views
0

我有一些複選框的jQuery,我試圖序列化的值,所以我可以在PHP中獲得多個選擇。jquery serialize不工作複選框

這裏是我的jQuery:

<script type="text/javascript"> 
    jQuery(document).ready(function($) { 
     $("input:checkbox").change(function() { 
      if($(this).is(':checked')) 
      { 
        var color = $(this).val().serialize; 
        $(".itemMain").hide(); 
        $(".indexMain").load('indexMain.php?color='+color); 
      } 
     }); 
    }); 
</script> 

在這裏,我的PHP:

$color = $_GET['color']; 

前申請日連載,一切都工作正常,但我不能有多個選擇。現在用serialize()完全不起作用。

有什麼建議嗎?謝謝!

+1

因爲$(本).VAL()總是會返回一個值,我不明白爲什麼你需要序列化? – Oussama 2012-08-05 04:08:03

+1

您不能序列化複選框的值,因爲返回的值不是jQuery對象。另外,你實際上並沒有調用'serialize()',因爲你忘記了括號。 – Blender 2012-08-05 04:12:13

+0

我實際上需要序列化,如果多個框被選中。我會怎麼做? – samyb8 2012-08-05 11:32:40

回答

0

粗略的解決方案可以是,在每個複選框的點擊事件中,您可以使用逗號分隔的形式將其值附加到變量(或隱藏的輸入字段)中,並將該變量傳遞給顏色查詢字符串。

1

另一個解決方案,爲我工作。

在要在其他方面多值的字段的名稱屬性簡單地規定:數組

<form action="" method="post" id="filters_form""> 
    <input id="fieldNameText" value="value0" name="fieldNameText" type="text">         
    <input type="checkbox" name="myFieldName[]" id="myFieldName" value="value1"/> 
    <input type="checkbox" name="myFieldName[]" id="myFieldName" value="value2"/> 
</form> 

序列化()方法var dataString = $("#filters_form").serialize();將導致

fieldNameText=value0&myFieldName%5B%5D=value1&myFieldName%5B%5D=value2 

如果您發送這些數據與AJAX後,你會得到這個在PHP:

阿賈克斯

$.ajax({ 
    type: "POST", 
    url: "yourFormURL", 
    data: dataString, 
    success: function(response) { 
     //do something 
    } 
}); 

PHP

print_r($_POST); 

/* Output : 
Array ([fieldNameText] => value0 [myFieldName] => Array ([0] => value1 [1] => value2)) 
*/