-1

私のjQueryは少し錆びていて、jsonオブジェクトを生成する方法を思い出せません。シリアル化メソッドから以下のjsonを作成しようとしていますが、タグに2つの値以外の値が入力されていませんか?

function serializeObject() {
    var o = {};
    o["CompanyTemplateId"] = CompanyTemplateId;
    o["Tags"] = [];
    $("[id^=DQTag]").each(function () {
        o["Tags"].push({'TagKey': $(this).id, 'TagValue': $(this).value});
    });

    return o;
};

私がそれをどのように見せたいか:

   {"CompanyTemplateId": "1",
    "Tags":[
            {"TagKey":"news1","TagValue":"This is a news item from tagValue."},{"TagKey":"news2","TagValue":"Second value"}
           ]
    }

私が得る結果は次のとおりです:

 {"CompanyTemplateId":"1","Tags":[{},{}]}. 

タグ内のオブジェクトの数は正しいのですが、なぜキーと値のペアがないのですか?

4

5 に答える 5

0

あなたはここに欠けてい"ます:

"TagKey":"news1","TagValue":"This is a news item from tagValue.},
Quote missing here --------------------------------------------^

または、これを使用できます:

JSON.stringify(o, null, 2);
于 2012-12-01T16:20:06.060 に答える
0

この関数を見てください。IE9でも、やりたいことができるようです。

function() {
    var o = {};
    o["CompanyTemplateId"] = 123;
    o["Tags"] = new Array();
    $("[id^=DQTag]").each(function(i , e) {
        o["Tags"][i] = new Object(); {
            o["Tags"][i].TagKey = e.id;
            o["Tags"][i].TagValue = e.value;
        };
    });
    console.log(o.Tags.length);
    console.log(o);
    console.log(JSON.stringify(o));
    return o;
};
于 2012-12-01T16:25:01.380 に答える
0

JSONをシリアル化する際のブラウザーのサポートが心配な場合は、クロスブラウザーのサポートを提供するJSON2.jsライブラリを使用できます。これを含めてJSON.stringify、オブジェクトをJSONにシリアル化するかJSON.parse、JSONをオブジェクトにデコードするために使用します。

于 2012-12-01T16:32:21.067 に答える
0

使用できません$(this).id、試してみてください$(this).attr('id')。値については、$(this).valまたは$(this).attr('value');を使用してください。

于 2012-12-01T16:32:35.053 に答える
0

だから私はそれが失敗した理由を理解しました。$(this)単にこれの代わりに使ったからです。

wokringコード:

o["Tags"].push({'TagKey': this.id, 'TagValue': this.value});
于 2012-12-01T16:32:43.410 に答える