J'essaie de créer un objet json à partir de variables que j'obtiens dans un formulaire.
var firstName = $('#firstName').val();
var lastName = $('#lastName').val();
var phone = $('#phoneNumber').val();
var address = $('#address').val();
Jusqu'à présent, j'ai le code ci-dessous, mais il ne sera pas validé ou ne fonctionnera pas. Je suis nouveau dans ce domaine, aidez-moi! Changer var en ceci:
var jsonObject =
{
firstName: firstName,
lastName: lastName,
phoneNumber:phoneNumber,
address:address
}
dans JSONlint je reçois cette erreur:
Erreur d'analyse sur la ligne 1: varjsonObject = {
^ Attendant '{', '['
si vous avez besoin de JSON entre guillemets, utilisez JSON.stringify( object)
var $items = $('#firstName, #lastName,#phoneNumber,#address ')
var obj = {}
$items.each(function() {
obj[this.id] = $(this).val();
})
var json= JSON.stringify( obj);
Il est appelé Object Literal
Je ne sais pas ce que vous voulez que votre structure soit, mais selon ce que vous avez ci-dessus, où vous mettez les valeurs dans les variables, essayez ceci.
var formObject = {"formObject": [
{"firstName": firstName, "lastName": lastName},
{"phoneNumber": phone},
{"address": address},
]}
Bien que cela semble plus logique (pourquoi avez-vous un tableau dans le littéral ci-dessus?):
var formObject = {
firstName: firstName
...
}
Essayez ceci pour voir comment créer un objet à partir de chaînes.
var firstName = "xx";
var lastName = "xy";
var phone = "xz";
var adress = "x1";
var obj = {"firstName":firstName, "lastName":lastName, "phone":phone, "address":adress};
console.log(obj);
Vous faites référence à un élément DOM lorsque vous faites quelque chose comme $('#lastName')
. C'est un élément avec l'attribut id
"lastName". Pourquoi faire ça? Vous souhaitez référencer la valeur stockée dans une variable locale, complètement indépendante. Essayez ceci (en supposant que l'affectation à formObject
est dans la même portée que les déclarations de variables) -
var formObject = {
formObject: [
{
firstName:firstName, // no need to quote variable names
lastName:lastName
},
{
phoneNumber:phoneNumber,
address:address
}
]
};
Cela semble très étrange cependant: vous créez un objet "formObject" qui contient un membre appelé "formObject" qui contient un tableau d'objets.
var formValues = {
firstName: $('#firstName').val(),
lastName: $('#lastName').val(),
phone: $('#phoneNumber').val(),
address: $('#address').val()
};
Notez que cela contiendra les valeurs des éléments au moment où le littéral de l'objet a été interprété, pas lorsque les propriétés de l'objet sont accessibles. Vous auriez besoin d'écrire un getter pour cela.