2016-03-26 3 views
0

ユーザー定義のキーと値で動的配列を作成したかったのです。私はベストを尽くしましたが、解決策を見つけることができませんでした。ユーザー定義のキーと値を配列に追加する方法

これは私がしようとしたものです:

function demo1(form_no) { 
    var post_data_array = []; 
    var post_data_array2 = []; 

    var array1 = ['abc', 'xyz']; 

    $.each(array1, function(key, value) { 

    var temp_value = $("#" + value + "_" + form_no).val(); 
    var temp_key = value + "_" + form_no; 

    post_data_array.push({ 
     key2: temp_key, 
     value2: temp_value 
    }); 

    }); 

    $.each(post_data_array, function(index, value) { 
    post_data_array2[value.key2] = value.value2; 
    }); 

    .ajax({ 

    type: "post", 
    data: { 
     postdata121: post_data_array2 
    }, 
    url: base_url + "/temp_function/" + form_no, 
    success: function(result) { 
     alert(result); 
    } 

    }); 

} 

しかし、私はpost_data_array2を警告場合post_data_array2に値を代入した後、私は空の配列を取得しています。

さらに、私は別のページにデータを投稿するためにajax関数にpost_data_array2を投稿しようとしましたが、私はpostdataを空にしています。

私は何が起こっているのか分かりません。

+0

あなたの質問を見直すことができます。スペルミスがあり、理解が難しいですか? – rsabir

+0

JavaScriptには連想配列が厳密には存在しないため、カスタム配列キーを使用することはできません。 'alert(post_data_array2)'を実行すると、配列に項目がないことが表示されます(項目を追加するのではなくプロパティを設定しているため表示されません)。 – Chris

答えて

0

array1の値をキーとして使用するとします。これを行うには、配列[]の代わりに、オブジェクト{}を使用します。

これはあまりにも少ないコードで実現することができます。

function demo1(form_no) { 
 
    var array1 = ['abc', 'xyz']; 
 
    var data = {}; 
 

 
    $.each(array1, function(key, value) { 
 
    var temp_key = value + "_" + form_no; 
 
    data[temp_key] = $("#" + temp_key).val(); 
 
    }); 
 
    
 
    alert(JSON.stringify(data)); 
 

 
    $.ajax({ 
 

 
    type: "post", 
 
    data: { 
 
     postdata121: data 
 
    }, 
 
    url: base_url + "/temp_function/" + form_no, 
 
    success: function(result) { 
 
     alert(result); 
 
    } 
 
    }); 
 
} 
 

 
demo1(123);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 

 
<input id=abc_123 value=abcValue> 
 
<input id=xyz_123 value=xyzValue>

array1以上のループ、我々はdataオブジェクトに新しいキー/値のペアを作成するために、各メンバーを使用する場合これは$.ajaxで送信されます。

+0

ありがとうそれは私のために働く。 –

関連する問題