9
votes

Post matrice de plusieurs valeurs de la boîte à cocher

Pourquoi une seule valeur de la case à cocher "DB" est-elle envoyée au script côté serveur?

jQuery: xxx

html: xxx

edit : j'ai fini par répondre à ma propre question, mais quelqu'un a-t-il une documentation (ou un explication) de pourquoi cela est nécessaire? Il m'est difficile de trouver la réponse exacte (donc le postthumous post).


2 commentaires

Bien sûr, il est documenté, puisque vous utilisez php comme le script côté serveur, vérifier ici: php.net/manual/en/faq.html.php#faq.html.arrays et ici: php.net/manual/en/language.variables.external.php


Un peu hors du sujet, la valeur pour de l'étiquette doit être l'ID d'entrée, pas la valeur d'entrée.


4 Réponses :


5
votes

Vous devez avoir les crochets pour spécifier un tableau [] sur le nom de la variable soumis.

{'db[]': db}

$(".db").live("change", function() {
    $(this).add($(this).next("label")).add($(this).next().next("br")).remove().insertAfter(".db:last + label + br"); 
    var url = "myurl.php";
    var db = [];
    $.each($('.db:checked'), function() {
        db.push($(this).val()); 
    });
    if(db.length == 0) { 
        db = "none"; 
    }       
    $.post(url, {'db[]': db}, function(response) {
        $("#dbdisplay").html(response); 
    });
    return true;
});


0 commentaires

15
votes

Je suis d'accord avec @jjclarkson. Il suffit d'ajouter, au lieu de pousser vos ids à un tableau, vous pouvez utiliser $ .map : < pre> XXX


2 commentaires

Est-il plus efficace d'utiliser .MAP ()?


@jjclarkson - pas sûr, mais c'est plus court et plus à la fois. Cela dit, j'utilisais le $. Cherchez-vous jusqu'à ce que je découvre $ .Map, je n'ai pas remarqué aucune différence, mais en général, je ne pense pas que l'on remarque une différence pour un ensemble de données de taille de petite à moyenne.



1
votes

$ ('entrée [nom = "MyCheckboxes"]: vérifié'). Plan (Fonction () { retour $ (ceci) .val (); }). Obtenez (). Joindre (",");

puis exploser dans php $ myCheckboxes = exploser (',', $ _ obtenir ['mycheckboxes']);


0 commentaires

5
votes
var checkeditems = $('input:checkbox[name="review[]"]:checked')
                       .map(function() { return $(this).val() })
                       .get()
                       .join(",");
$.ajax({
    type: "POST",
    url: "/index.php/openItems/",   
    data: "ids=" + checkeditems,                                        
    success: function(msg) { $(".mainContainer").html(msg); }
});

0 commentaires