2016-05-07 11 views
0

Dies ist ein bisschen ein Design und eine How-To-Frage.Erstellen Sie JSON-Dict aus HTML-IDs für Python (Flask)

Es gibt eine Reihe von <divs> auf einer Seite, die von Flask/Jinja generiert wurden. Die divs zeigen Bilder, und sie haben einen id Wert, der eine eindeutige Nummer wie 2309201 ist. Sie haben auch andere Werte im HTML wie name.

Da der Benutzer die Möglichkeit hat, ein Bild div Elemente zu entfernen, möchte ich nur die restlichen div IDs und andere Schlüssel zurück zu Python über Flask für die weitere Verarbeitung senden.

Angenommen, es könnte 1000 + IDs geben, ich möchte ein Wörterbuch erstellen und senden dies über POST zu Flask. Wie würde ich ein Wörterbuch für jedes dieser Elemente mit JQuery/etc erstellen?

+1

Über Design, mit der HTML als Datastore ist oft als eine schlechte Praxis angesehen. Ihre Daten sollten bereits in einem Listen-/Objektformat vorliegen. Dann ist es nur eine Frage der Serialisierung. – spectras

+0

Dank Spektren - wenn Sie sagen, dass es schon in einem Listen-/Objektformat sein sollte, wie meinst du das? Es wird ursprünglich als Diktat gespeichert und in das Jinja-Template übernommen. Aber da es am Frontend editierbar ist, brauche ich weg um die Änderungen zu sehen (d. H .: das überarbeitete Diktat zurückgeben). Gibt es ein Beispiel/eine Technologie, die Sie im Sinn haben, um dies am besten zu erreichen? –

+1

Ich würde zu mögliche Ansätze sehen: 1) halten Sie es in der HTML, aber lassen Sie Ihr Skript analysieren die HTML in ein JS-Objekt, sobald die Seite lädt. Von dort ist das JS-Objekt die Hauptreferenz, oder 2) bette die Daten zusätzlich zu oder anstelle der HTML-Version in JSON-Format in die Seite ein (im letzteren Fall muss Ihr JS sofort dom-Knoten rendern) es lädt). Achten Sie darauf, Ihren JSON ordnungsgemäß zu entschlüsseln, wenn Sie dies tun. – spectras

Antwort

0

Sie könnten eine Klasse Element zu jedem div hinzufügen:

<div class="custom_image" id="uique_number"></div> 

Und dann filtern nach dieser Klasse und schieben alle diese IDs auf ein Array:

ids = []; 
$('.custom_image').each(function(){ 
    ids.push($(this).attr('id')); 
}); 

Vielleicht gibt es eine bessere Lösung, aber Ich bin mir ziemlich sicher, das sollte funktionieren :)

Peace Yatekii