web-dev-qa-db-ja.com

変数を持つJSONオブジェクトの作成

フォームで取得している変数からjsonオブジェクトを作成しようとしています。

var firstName = $('#firstName').val();
var lastName  = $('#lastName').val();
var phone     = $('#phoneNumber').val();
var address   = $('#address').val();

これまでのところ、以下のコードがありますが、検証も機能もしません。これに新しいイム、助けてください! varをこれに変更:

var jsonObject = 
                {
                 firstName: firstName, 
                 lastName: lastName,
                 phoneNumber:phoneNumber,
                 address:address
                }

jSONlintではこのエラーが発生しています:

1行目の解析エラー:varjsonObject = {
^「{」、「[」が必要です

20
Anthony

二重引用符で囲まれたJSONが必要な場合は、JSON.stringify( object)を使用します

var $items = $('#firstName, #lastName,#phoneNumber,#address ')
var obj = {}
$items.each(function() {
    obj[this.id] = $(this).val();
})

var json= JSON.stringify( obj);

デモ: http://jsfiddle.net/vANKa/1

21
charlietfl

Object Literalで呼び出されます

構造をどのようにしたいのかわかりませんが、上記の設定に従って、変数に値を入力する場所でこれを試してください。

var formObject =  {"formObject": [
                {"firstName": firstName, "lastName": lastName},
                {"phoneNumber": phone},
                {"address": address},
                ]}

これはもっと理にかなっているようですが(なぜ上記のリテラルに配列があるのですか?):

var formObject = {
   firstName: firstName
   ...
}
11
hvgotcodes

これを試して、文字列からオブジェクトを作成する方法を確認してください。

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);
6

$('#lastName')のようなことをするときにDOM要素を参照しています。これは、id属性「lastName」を持つ要素です。どうしてですか?ローカル変数に保存された、完全に無関係な値を参照したい。これを試してください(formObjectへの割り当てが変数宣言と同じスコープ内にあると仮定)-

var formObject = {
    formObject: [
        {
            firstName:firstName,  // no need to quote variable names
            lastName:lastName
        },
        {
            phoneNumber:phoneNumber,
            address:address
        }
    ]
};

これは非常に奇妙に思えます。オブジェクトの配列を含む「formObject」というメンバーを含むオブジェクト「formObject」を作成しています。

4
Madbreaks
var formValues = {
    firstName: $('#firstName').val(),
    lastName: $('#lastName').val(),
    phone: $('#phoneNumber').val(),
    address: $('#address').val()
};

これには要素の値が含まれることに注意してくださいオブジェクトリテラルが解釈された時点ではなく、オブジェクトのプロパティにアクセスしたときです。そのためのゲッターを作成する必要があります。

2
jbabey