24

フォームで取得している変数から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 = {
^'{'、'['を期待しています

4

5 に答える 5

24

二重引用符で囲まれた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

于 2012-10-20T20:36:14.093 に答える
13

オブジェクトリテラルで呼び出されます

構造をどうしたいのかわかりませんが、上記の内容によると、変数に値を入れる場所はこれを試してください。

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

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

var formObject = {
   firstName: firstName
   ...
}
于 2012-10-19T17:27:20.183 に答える
6

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

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);
于 2012-10-19T17:37:51.120 に答える
4

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

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

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

于 2012-10-19T17:27:39.717 に答える
2
var formValues = {
    firstName: $('#firstName').val(),
    lastName: $('#lastName').val(),
    phone: $('#phoneNumber').val(),
    address: $('#address').val()
};

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

于 2012-10-19T17:42:08.093 に答える