2009-06-05 12 views
0

Je dois passer quelques éléments de formulaire sérialisés dans une fonction pour les renvoyer en tant qu'objet JSON. J'ai écrit la fonction, mais fieldName finit dans l'objet json en tant que "fieldName" au lieu du nom de champ réel ie; "PositionId" ou "Série". Les valeurs sont cependant correctes. JS ne me permettra pas d'utiliser field.name, mais il autorise field.value, c'est pourquoi j'ai dû créer var fieldName. Voici la fonction:Comment créer un objet personnalisé à partir d'un formulaire sérialisé?

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; 
} 

Répondre

3

Outre le problème que vous rencontrez, vous recréez l'objet dans chaque itération de la boucle. La ligne où vous définissez la propriété devrait lire:

myJSONObject[fieldName] = field.Value; 

fonction complète:

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

sacrément, tu me bats par comme 10 secondes. – CookieOfFortune

+0

Non, vous voudriez que ce soit un objet, pas un tableau. –

+0

était une faute de frappe :) fixe –

0

Essayez d'utiliser la notation indice de tableau:

myJSONObject[fieldName] = field.value; 
Questions connexes