2009-06-05 11 views
0

Ich muss einige serialisierte Formularelemente in eine Funktion übergeben, um sie als JSON-Objekt zurückzugeben. Ich schrieb die Funktion, aber Feldname endet im Json-Objekt als "fieldName" anstelle des tatsächlichen Feldnamen dh; "PositionId" oder "Serie". Die Werte sind jedoch korrekt. JS erlaubt mir nicht, field.name zu verwenden, aber es erlaubt field.value, deshalb musste ich var fieldName erstellen. Hier ist die Funktion:Wie erstelle ich ein benutzerdefiniertes Objekt aus dem serialisierten Formular?

function SerializedFormToJSON(serializedForm){ 
    var myJSONObject = {}; 
    var fieldName = ""; 
    $.each(serializedForm, function(i, field) { 
     fieldName = field.name; 
     if (field.value != "" && field.value != "ALL") { 
     myJSONObject = { fieldName: field.value }; 
     } 
    }); 
return myJSONObject; 
} 

Antwort

3

Neben dem Problem, das Sie erleben, sind neu zu erstellen Sie das Objekt in jeder Iteration der Schleife. Die Linie, wo Sie die Eigenschaft sollte lauten:

myJSONObject[fieldName] = field.Value; 

komplette Funktion:

function SerializedFormToJSON(serializedForm){ 
    var myJSONObject = {}; 
    var fieldName = ""; 
    $.each(serializedForm, function(i, field) { 
     fieldName = field.name; 
     if (field.value != "" && field.value != "ALL") { 
     myJSONObject[fieldName] = field.value; 
     } 
    }); 
return myJSONObject; 
+0

darn, schlagen Sie mich wie 10 Sekunden. – CookieOfFortune

+0

Nein, Sie möchten, dass es ein Objekt und kein Array ist. –

+0

war ein Tippfehler :) behoben –

0

Versuchen Array-Index-Notation:

myJSONObject[fieldName] = field.value; 
Verwandte Themen