1

JSON.stringify()単一の AJAX リクエストで検証スクリプトに送信できる多数のフォームを参照するオブジェクトを作成しようとしていますが、オブジェクト内の配列に適切に名前を付けることができないようです。配列 (フォーム) の数が増えるとカウントされます。

すなわち

var images = new Object();
var i = 0;

// loop through every form
$('form').each(function() {
   var form = $(this);

   images[i].name = form.find('input[name="name"]').val();
   images[i].description = form.find('textarea[name="description"]').val();

   // etc.

   i++;
});

したがって、2 ~ 3 回の繰り返し (つまり、2 ~ 3 の形式を経る) 後に完了すると、次のような Javascript オブジェクトが得られます (疑似コードで記述されているため、実際にどのように出力されるかは正確にはわかりません)。

images {
   0 {
      name : 0thImageNameValueHere,
      description : 0thImageDescripValueHere,
      etc : etc
   }

   1 {
      name : 1stImageNameValueHere,
      description : 1stImageDescripValueHere,
      etc : etc
   }
}

しかし、現在、Firebug はSyntaxError: missing ; before statement次の行を中心にエラーを出しています。

images[i].name = form.find('input[name="name"]').val();

これで、の「値」images[i].nameを好きなもの ( images[i].name = 'yes') に変更できますが、それでも同じエラーが発生します。構文的にはセミコロンが欠けていないので、そうではありません。オブジェクトを正しく宣言していない可能性はありますか?

4

2 に答える 2

2

画像は配列([])です。あなたの構文はこの状況に準拠していません(あなたはオブジェクトを期待しています)。配列内のアイテムごとにオブジェクトを作成してから、このオブジェクトの属性に値を割り当てることができます。

また、jQueryが提供するパラメーターを使用するだけでindex、独自のイテレーターを作成する必要はありません。

これはあなたが望むことをします:

var images = []; // create an array

$('form').each(function( index ) {
    var form = $(this);
    // create object with {} object notation
    var image = {
        name: form.find('input[name="name"]').val(),
        description: form.find('textarea[name="description"]').val()
    };
    images[index] = image; // append object in array position index;
}

オブジェクトの詳細については、JSONWIKIを参照してください。アレイW3Schoolsの詳細については、を参照してください。

于 2013-03-12T10:23:49.100 に答える
1

セミコロンの欠落についてはわかりませんがimages[i]、プロパティを割り当てる前にオブジェクトを作成する必要があります。つまり、これを試してください:

images[i] = { 
    name: get('input[name="name"]').val(),
    description: get('textarea[name="description"]').val()
};

によって提供されるインデックス パラメータを使用することもできますeach()

$('form').each(function(i) { ... }
于 2013-03-12T10:16:58.290 に答える