2016-08-29 17 views
1

私はデータを投稿しようとしています。jQuery投稿多次元配列データ

私の解決策は、各タブの別の配列を含む配列を作成することでした。その多次元配列を私のコントローラに投稿してください。

$("#savetabs").click(function() 
{ 
    $("body").addClass("loading"); 
    var $alltabdata = []; 
    $("#customtabs-holder").children().each(function() { 
     $tablename = $(this).attr('id'); 
     $thistabdata = []; 

     $inputs = $(this).find("input"); 
     $.each($inputs, function(index, value) { 
      $thistabdata[$(this).attr("name")] = $(this).val(); 
     }); 

     $selects = $(this).find("select"); 
     $.each($selects, function(index, value) { 
      $thistabdata[$(this).attr("name")] = $(this).val(); 
     }); 
     $alltabdata[$tablename] = $thistabdata; 
    }); 
    console.log($alltabdata); 

    posting = PostTabData($client_id, $alltabdata); 

    posting.done(function(data) { 
     $("body").removeClass("loading"); 
     console.log(data); 
     alert(data); 
    }); 

    posting.fail(function() { 
     $("body").removeClass("loading"); 
     alert("Failed to post tab info"); 
    }); 
}); 

function PostTabData($client_id, $tabdata) { 
    console.log($tabdata); 
    debugger; 
    return $.post("/CustomTables/Contents/Save", 
    { 
     client_id: $client_id, 
     alltabdata: $tabdata, 
    }); 
} 

ポスト前にconsole.logは正しい情報を表示しますが、タブのデータは私のコントローラで終わるしないと私はネットワークオプションでクロームの開発ツールをチェックするときにのみからなるとして送られたデータを示していますclient_idのフィールドの

+1

これを試してください:$ thistabdata = {}; –

答えて

1
は、オブジェクトへのあなたの変数を変更し

:JavaScriptで{}

から[]から

は数字キーで唯一の配列を存在します。 結合配列はjavascriptにありません。

違いを埋めるために、このスニペットを確認します。

//array 
 
var arr=[]; 
 
arr["name"]="Example name"; 
 

 
console.log("Here array log:"); 
 
console.log(arr); 
 

 
//object 
 
var obj={}; 
 
obj["name"]="Example name"; 
 

 
console.log("Here object log:"); 
 
console.log(obj);

+0

ありがとう! 3括弧で3時間! – McGreeb