Frage

Ich versuche, einige Daten aus einigen Nicht-Formelementen aufgebaut zu schreiben, aber ich kann nicht scheinen, um es zu knacken.

Wie kann ich ein Array im gleichen Format erstellen, wie serializeArray() funktioniert mit Formularfeldern?

Ich habe auf diesem mehr Varianten ausprobiert, aber es nimmt nur den letzten .active-Tag auf.

$('li.tag.active').each(function() {
    values = {};
    values['tagID'] = $(this).attr('id');
});

$.post("/scripts/php/process.php",{     
    'data': data,
    funcName : 'tagResults'
},function(results){
    $("#results").html(results);
}) 
War es hilfreich?

Lösung

ok - fand diese in dem Ende, das genau funktioniert, als ob es eingegeben wurden Felder mit serializeArray () ...

function getTags(){

        var data = new Array();

        $('li.tag.active').each(function() {
                data.push({ 'name':$(this).attr("name"), 'value':$(this).attr("id")});
         });

         $.post("/scripts/php/process.php",{ 
             'data': data,
             funcName : 'tagResults'
        }) 

}

Andere Tipps

Das Hinzufügen dieser Funktion zu Ihrem JS-Code können Sie ein beliebiges Objekt mit „name“ serialisiert und „Wert“ Attribute .. Ich benutze es in der Regel zu serialize Formen. Ich weiß, Sie sagten diese Kontrollen sind formlos, aber ich könnte mir vorstellen, das verwendet werden könnte, jedes Objekt mit einem Namen / Wert-Attribut zu serialisiert. Es sieht auch leicht genug, um es zu ändern, für andere Attribute eines Objekts zu suchen, wie ID. Es ist schwer, genau zu sagen, was Sie tun es, wie Sie nicht der Definition von „Daten“ zeigen oder die Verwendung von „Werten“

    $.fn.serializeObject = function()
    {
        var o = {};
        var a = this.serializeArray();
        $.each(a, function() {
            if (o[this.name]) {
                if (!o[this.name].push) {
                    o[this.name] = [o[this.name]];
                }
                o[this.name].push(this.value || '');
            } else {
                o[this.name] = this.value || '';
            }
        });
        return o;
    };

Dann fügen Sie ihn einfach auf Ihre URL-Zeichenfolge

var dataToPassToAjax = 'allData=' + myObject.serializeObject();

Wenn Sie nur einen Wert sind vorbei, Sie serialisiert nicht benötigen.

$.post("/scripts/php/process.php",{ 'data': 'data=' + $('li.tag.active').id, funcName : 'tagResults' }). 

dann in process.php, nur um den Wert von $ _ REQUEST [ 'data'] und es wird Ihre ID

Best Antwort, die ich von Ob gesehen habe. und Guntram: jQuery Serialisieren / serializeArray von einem Element, das nicht ist eine Form

$('div :input').serializeArray()

Zusätzlich zu den Eingängen, diese Picks up wählen und Textbereich. Süße.

Mit dieser Funktion können Sie eine beliebige Menge von Elementen machen serializable:

function makeSerializable(elem) {
  return $(elem).prop('elements', $('*', elem).andSelf().get());
}

Dann können Sie es wie folgt verwendet werden:

var arr = makeSerializable('li.tag.active').serializeArray();

oder

var $elem = $('li.tag.active');
var data = makeSerializable($elem).serialize();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top