3

フォームからすべてのデータを取得し、アクセス可能な配列に配置したいと考えています。これが私がこれまでに持っているものです:

var data = $("#everything").serializeArray();
var test = [];
$(data).each(function(index, element) {
    test[element] = element.val();
});

私はこれを試しました:

alert(data["fname"]);

しかし、テキストボックスに何かがあったにもかかわらず、それは「未定義」を返しました。そのため、.eachメソッドを実行する必要があります。しかし、今私がするとき

alert(test["fname"]);

メッセージもポップアップしません。私が間違っていることを誰かが知っていますか?入力のIDまたは名前でアクセスできる配列にすべてのフォームデータを入れたいだけです。

4

1 に答える 1

5

あなたのコードに関するいくつかのこと...最初testは配列ですが、のようなオブジェクトとして使用していますtest[element]。これは問題を引き起こします。次にserializeArray、オブジェクトの配列を作成します。各オブジェクトには含まれnamevalueいるため、 はありませんelement.val()。さらに、DOM要素であると確信してelementいるため、jQueryのようにラップするか$(element).val()、ネイティブプロパティを使用する必要がありますelement.valueが、これはそうではありません探している値を取得します。これを試して:

var data = $('#myform').serializeArray();
var obj = {};
for (var i = 0, l = data.length; i < l; i++) {
    obj[data[i].name] = data[i].value;
}

デモ: http://jsfiddle.net/elclanrs/KRbPg/

于 2012-09-14T06:03:39.317 に答える