2012-03-28 7 views
0

Ich habe Probleme beim Posten dieser Multi Checkbox Daten mit Ajax.Ajax Post Multi Kontrollkästchen

<?php 
foreach($_SESSION['contacts'] as $user => $id) {?> 
<li class="contactList"><span><input type="checkbox" name="contact[]" id="contact" value="<?php echo $id; ?>" /></span><?php echo $user; ?></li> 
<?php } ?> 

dann die Ajax

 var contact = $("#contact").val() 
    var days = $("#days").val() 
    $.ajax({ 
     type: 'post', 
     url: 'temp_history.php', 
     data: {contact: contact, days: days}, 
     context: document.body, 

Es ist nicht Entsendung der Anordnung der Kontakte als die Form normalerweise einreichen würde aber einen einzigen Kontakt einreicht.

Irgendwelche Ideen?

Antwort

1

Sie müssen Sie Werte mit Schleife erhalten. Versuchen Sie folgendes:

var contact = new Array(); 
$("input[@name='contact[]']:checked").each(function() { 
    contact.push($(this).val()); 
}); 
+0

Schön, dass eine Behandlung arbeitete, prost –

+2

Dies kann mit 'map' auf einen Einzeiler reduziert werden, wenn Sie es wünschen:' Kontakt = $ ('input [name = "contact []" ]: checked '). map (function() {return $ (this) .val();}). toArray(); ' –

2

ID muss im Dokument eindeutig sein. $('#contact') gibt immer nur ein Element zurück.

Darüber hinaus gibt .val() immer den Wert des ersten Elements in der Menge zurück, auch wenn es mehr gab.

Betrachten .serialize mit den Daten zu übergeben:

data: $('#some-form').serialize() 

... die Sie die Daten im Format days=X&contact%5B%5D=1&contact%5B%5D=2