$.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;
};
Formular in JSON serialisieren
Chris Coyier am
Das ist überhaupt kein „JavaScript“. Das ist ein jQuery-Schnipsel.
Das ist JavaScript, da jQuery ein Framework ist, das JavaScript als Sprache verwendet!
Narren wie du sollten keine Kommentare posten dürfen!
Wow, danke Luca für den sehr nützlichen Kommentar.
Übrigens, da du anscheinend sehr darauf bedacht bist, irrelevante Details hervorzuheben,
dann solltest du JavaScript richtig schreiben.
Der obige Schnipsel wird verschachtelte Formularobjekte nicht korrekt behandeln,
das folgende jQuery würde es besser lösen.
(function(jQuery){})(jQuery);Vielen Dank, Yann. Es funktioniert mit komplexen Arrays im Formular.
Bravo, Luca. JavaScript ist die Sprache, jQuery ist ein Drittanbieter-Softwarepaket, das für/in JavaScript geschrieben wurde. Der Punkt ist relevant, da es einen Unterschied gibt.
Verschoben.
Ich bin sehr neu in JQuery, und das ist wahrscheinlich eine dumme Frage, aber könnten Sie ein Beispiel für die Verwendung bereitstellen? Ist es so etwas wie
$("#myForm").serializeObject?Vergessen Sie nicht, das Namensattribut bei Ihren Eingaben zu verwenden.
Verwenden Sie dies
var myformdata = $(“#myForm”).serializeObject();
Diese Bibliothek macht das besser (sicher ist sie etwas größer)
http://code.google.com/p/form2js/
Danke!
Ich verstehe es immer noch nicht ganz.
Ich auch
Hallo, ich benutze eine Flash-Galerie und muss sie für einen neuen Kunden in eine Website integrieren.
Die Galerie generiert eine JSON-Datei wie folgt:
{"gallery":{"items":[{"description":"","link":"","thumb":"gallery/images/t2.jpg","target":"","source":"gallery/images/1.jpg"},{"description":"","link":"","thumb":"gallery/images/t2.jpg","target":"","source":"gallery/images/2.jpg"},
{"description":"","link":"","thumb":"gallery/images/t3.jpg","target":"","source":"gallery/images/3.jpg"},
{"description":"","link":"","thumb":"gallery/images/t4.jpg","target":"","source":"gallery/images/4.jpg"},
{"description":"","link":"","thumb":"gallery/images/t5.jpg","target":"","source":"gallery/images/5.jpg"}],
"settings":{"background":{"bgColor":16777215,"transparentBG":true},"image":{"scaleMode":"fill","cornerRadius":10,"transitionDuration":1,"align":"center","transitionEffect":"fit","useShadow":true},"caption":{"position":"bottom","bgColor":0,"color":16777215,"visibleMode":"onRollOver","bgAlpha":30,"fontName":"Arial","fontSize":11},"preview":{"usePreview":true,"alpha":100,"outlineColor":0,"height":100,"cornerRadius":10,"width":200,"useShadow":true},"slideshow":{"start":false,"delay":2.5,"loop":true,"stopAutoOnClick":true},"dimensions":{"height":385,"width":470},"thumbBar":{"scrollSpeed":10,"position":"bottom","useThumbBar":true},"preloader":{"alpha":80,"usePreloader":true},"thumbnail":{"cornerRadius":0,"useShadow":true,"outlineColor":3355443,"outlineColorOnRollOver":6710886,"height":45,"alpha":70,"width":60,"outlineColorOnClick":10066329},"buttons":{"position":"right","fullScreenButton":true,"navigationButtons":true,"slideshowButton":true}}},"galleryName":"Art Gallery"}
Kann mir jemand zeigen, wie man Werte aus einem HTML-Formular einfügt?
Vielen Dank im Voraus
@Ignacio – Sie müssen durch das JSON-Objekt schleifen, das aus dieser Funktion erstellt wurde, und einfach eine weitere Variable erstellen, zu der Sie Elemente kopieren.
Hallo zusammen,
Ich möchte wissen, ob es in jQuery eine Formularreservierung für die Ein- und Ausgabe von Daten gibt. Ich würde gerne ein Tutorial finden.
Ich möchte Zimmer buchen
Vielen Dank
Dieser Schnipsel ist bisher nützlich.
Mein Ergebnis, wenn ich `alert` mache, wiederholt die Werte in jedem JSON-Element.
Alter, danke dafür. Ich habe hier angefangen, habe mich dann von einigen Links in den Kommentaren ablenken lassen, und nach einer Rundreise durch das Internet habe ich den Weg zurückgefunden zu dieser einzigen funktionierenden Lösung.
Vielen Dank, ich schätze es sehr!
Scheint nicht auf Felder zu funktionieren, die z. B. `start[125]` heißen.
Ich bekomme zurück
statt des gewünschten
Dies scheint (nach den Daten zu urteilen) von Stackoverflow kopiert zu sein: http://stackoverflow.com/questions/1184624/convert-form-data-to-js-object-with-jquery
Ich denke, Sie verstehen den Sinn des Teilens von Code-Schnipseln nicht…
Verwirrt über diesen Teil
if (!o[this.name].push)
Ich bin noch nicht sehr gut darin, Entschuldigung~
Leute sollten immer nett zueinander sein. Unhöfliche Leute sollten keine Kommentare posten dürfen.
Funktioniert super für einfache Formulare! Danke!
Ich muss ein neues JSON-Format aus einem JSON-Objekt erstellen.
Hier habe ich folgendes JSON-Objektergebnis:
[
{
“Location.Country”: “India”,
“Location.City”: “Chennai”,
“Location.Office”: “Shriram IT Gateway”,
“countstar”: 243
},
{
“Location.Country”: “India”,
“Location.City”: “Chennai”,
“Location.Office”: “MEPZ”,
“countstar”: 173
},
{
“Location.Country”: “Australia”,
“Location.City”: “Sydney”,
“Location.Office”: “CSS Australia”,
“countstar”: 1
},
{
“Location.Country”: “India”,
“Location.City”: “Bangalore”,
“Location.Office”: “Glow Network”,
“countstar”: 9
},
{
“Location.Country”: “United States”,
“Location.City”: “Richardson”,
“Location.Office”: “Dallas”,
“countstar”: 17
},
{
“Location.Country”: “India”,
“Location.City”: “Chennai”,
“Location.Office”: “West Wing”,
“countstar”: 174
},
{
“Location.Country”: “United States”,
“Location.City”: “Utah”,
“Location.Office”: “Utah”,
“countstar”: 29
}
]
Neues Format konvertieren
{
“name”:”Locations”,
“children”:[
{
“name”:”india”,
“children”:[
{
“name”:”Chennai”,
“children”:[
{
“name”:”Shriram IT Gateway”,
“size”:1541
},
{
“name”:”Mainwing”,
“size”:1170
},
{
“name”:”Ambit”,
“size”:4626
},
{
“name”:”Mepz”,
“size”:1296
}
]
},
{
“name”:”Bangalore”,
“children”:[
{
“name”:”ITPL Bangalore”,
“size”:5
},
{
“name”:”Banaglore”,
“size”:241
}
]
},
{
“name”:”Hyderabad”,
“size”:87
},
{
“name”:”Coimbatore”,
“size”:29
},
{
“name”:”Perungalathur”,
“size”:67
},
{
“name”:”Glow Network”,
“size”:122
}
]
},
{
“name”:”United States”,
“children”:[
{
“name”:”Dallas”,
“size”:299
},
{
“name”:”Texas”,
“size”:8
},
{
“name”:”Newyork”,
“size”:49
},
{
“name”:”Boston”,
“size”:10
},
{
“name”:”Utah”,
“size”:399
},
{
“name”:”Washington”,
“size”:2
},
{
“name”:”Sanjose”,
“size”:97
}
]
}
}
Bitte helfen Sie mir?
Dieses jQuery-Plugin behandelt Formulare zu JSON für einfache und komplexe Konvertierungen.
https://github.com/marioizquierdo/jquery.serializeJSON
Verwendung: $(“form”).serializeJSON()
Dies ist ein gutes Plugin und sehr flexibel (z. B. Möglichkeit, nicht angekreuzte Checkboxen einzuschließen), aber beim Parsen von Mehrfachauswahlfeldern, wenn ein Element ausgewählt ist, wird es nicht zum Array hinzugefügt, sondern einfach als Wert gesetzt. Viele REST-Endpunkte, mit denen ich gearbeitet habe, erwarten ein Array im JSON, unabhängig von der Anzahl der Elemente.
Dies bezieht sich zurück auf das `serializeArray`-Plugin (auf dem das Plugin vermutlich basiert), das nicht verfolgt, ob dieses Eingabeelement eine Mehrfachauswahl ist, und einfach alle Schlüsselwerte für jede ausgewählte Option ausgibt. Wenn Sie dann die JSON-Ausgabe erstellen möchten, es sei denn, Sie überprüfen erneut das entsprechende Formularelement während der Iteration, gibt es keine Möglichkeit herauszufinden, ob es sich um eine Mehrfachauswahl handelt und ob es in einem Array sein muss. Dies ist einfach gelöst, scheint aber, als ob `serializeArray` für komplexere Fälle als Ausgangspunkt eher sinnlos ist.
Ist es möglich, ein Formular mit CSS-Stilen in JSON zu erstellen?