連想JavaScript配列をシリアル化する必要があります。 これは単純な形式の製品と数値ですが、作成した直後は配列が空に見えます。JavaScript連想配列をシリアライズする方法は?
コードはここにある:http://jsbin.com/usupi6/4/edit
連想JavaScript配列をシリアル化する必要があります。 これは単純な形式の製品と数値ですが、作成した直後は配列が空に見えます。JavaScript連想配列をシリアライズする方法は?
コードはここにある:http://jsbin.com/usupi6/4/edit
をサポートするための
使用json-jsは、「連想配列」のためのJSの配列を使用しないでください。
var array_products = {};
$.each
が動作しない理由は次のとおりです:jQueryのは、あなたが配列を渡すことを認識し、のみ数値以上の性質を反復した、普通のオブジェクトを使用してください。他のすべては無視されます。
配列には数字キーを持つエントリしかないと考えられます。文字列キーを割り当てることはできますが、多くの関数は文字列キーを考慮しません。
ベター:あなたはjQueryのを使用したよう
、あなたはシリアル化jQuery.param
[docs]を使用することができます。
var array_products = []; // now we need an array again
$('.check_product:checked').each(function(i, obj) {
// index and value
var num = $(obj).next().val();
var label = $(obj).next().next().attr('data-label');
// build array
if((num > 0) && (typeof num !== undefined)) {
array_products.push({name: label, value: num});
}
});
var serialized_products = $.param(array_products);
独自のURIエンコード機能を実装する必要はありません。
ベスト:あなたが与える場合
入力が適切なname
をフィールド:
<input name="sky_blue" class="percent_product" type="text" value="20" />
あなたも.serialize()
[docs]を利用すると、大幅に量を減らすことができますコード(私はnext adjacent selector [docs]を使用):
var serialized_products = $('.check_product:checked + input').serialize();
(ただし、値は0
となります)。
JSON.stringify(object)
追記何ら連想配列が存在しないオブジェクトのみが存在します。一般的にはIE6やIE7などのレガシーブラウザに
最新のブラウザでのみJSON.stringifyを使用できますか? [json2.js](https://github.com/douglascrockford/JSON-js)へのスクリプトリファレンスを含めない限り? –
@AshClarkeは、最新のブラウザーの定義に依存します。これは現在のブラウザーと最近のブラウザーでサポートされています。_legacy_サポートが必要な場合は、json2を使用してください(私は既にリンクを追加しています) – Raynos
@Raynosは 'let arr = []; a ['foo'] = 'bar'; JSON.stringify(a); 'string [']' – ShrekOverflow
あなたはJSON library(またはネイティブJSON object利用可能な場合)とそれをシリアライズできます。
var serialised = JSON.stringify(obj);
ありがとうございました! –