2010-11-21 5 views

Antwort

14

Ähnlich wie Nick gepostet, aber ein wenig sauberer

var dataArray = $("#myform").serializeArray(), 
    dataObj = {}; 

$(dataArray).each(function(i, field){ 
    dataObj[field.name] = field.value; 
}); 

Dann die gleiche Art und Weise Zugriff auf

alert(dataObj['title']); 
11
alert(dataArray[0].name); 
alert(dataArray[0].value); 

So:

for (i=0; i<dataArray.length; i += 1) { 
    if (dataArray[i].name === "title") { 
     // do something here... 
    } 
} 
+0

Danke, aber was ist, wenn ich mehrere Eingabefelder habe und ich nicht auf die Bestellung verlassen will? – bart

+2

Sie verlassen sich nicht auf Reihenfolge der Name ist die ID und der Wert ist der Wert, sie sind nur nicht in einem Objekt wie Sie erwartet haben, müssen Sie über das Array iterieren und die Dinge verarbeiten, wie Sie sie begegnen . – Tom

2

Run console.log(dataArray);, dann den Eigenschafteninspektor öffnen, und überprüfen Sie die Konsole. In Chrome würden Sie mit der rechten Maustaste klicken und "Element prüfen" auswählen und dann unten links auf das Symbol "> =" klicken, es ist das zweite von links.

In Firefox würden Sie Firebug installieren und es gibt eine Registerkarte „Console“

Nicht sicher bezeichnet, wenn es in IE, wahrscheinlich etwas in den Entwicklertools (Presse f12) verfügbar ist, aber ich würde die Entwicklung nicht empfehlen in IE.

Wie auch immer, dies wird das Objekt auf eine Weise auflisten, die Ihnen erlaubt, zu navigieren und die Werte jedes Elements zu sehen. Auf diese Weise können Sie diese dann verwenden zu entschlüsseln, wie die Werte für den Zugriff auf :)

Viel Glück

23

Sie können entweder eine Schleife durch, as @Tom has ... oder wenn Sie mehr als eine zugreifst, sein ein bisschen mehr effiziente und Schleife einmal, ein Objekt wie folgt erstellen:

var dataArray = $("#myform").serializeArray(), 
    len = dataArray.length, 
    dataObj = {}; 

for (i=0; i<len; i++) { 
    dataObj[dataArray[i].name] = dataArray[i].value; 
} 

Dann können Sie darauf zugreifen, wie Sie wollen, zum Beispiel:

alert(dataObj['title']); //or alert(dataObj.title); 

You can test it out here .

+1

Sehr schön !!! Dies funktioniert sehr gut, es zu einem PHP-Formular-Prozessor schieben! –

1

append/echo/print dataArray[0].name zu einem div geben Ihnen 'title'

1

Alerting serializeArray von Eingaben in myDiv (Anmerkung: der :input Selektor enthält auch select- und textarea-Tags!):

//alert(fData.length) // how many inputs got picked up 
var fData=$("#myDiv :input").serializeArray(); 
var msg=""; 
for(var i=0;i<fData.length;i++){ 
    var raKy=Object.keys(fData[i]); 
    msg+="\n"+raKy[0]+":"+eval("fData[i]."+raKy[0])+" "+raKy[1]+":"+eval("fData[i]."+raKy[1]); 
} 
alert(msg); 
3

Dies hinzufügen, um anderen in Zukunft zu helfen. Gute Möglichkeit, alle Werte schnell zu überprüfen.

var formdata = $("#myform").serializeArray(); 
var formdata = JSON.stringify(formdata); 
alert (formdata); 
Verwandte Themen