2016-08-29 9 views
1

Ich habe eine variable Anzahl von Registerkarten mit benutzerdefinierten Formularen auf denen ich versuche, die Daten aus zu buchen.jQuery Beitrag keine multidimensionalen Array-Daten senden

Meine Lösung bestand darin, ein Array mit einem anderen Array für jede Registerkarte zu machen. dann poste dieses mehrdimensionale Array an meinen Controller.

$("#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, 
    }); 
} 

die console.log vor der Post zeigt die richtigen Informationen, aber die Registerkarte Daten endet nicht in meinem Controller und wenn ich chromes Entwickler-Tools unter der Netzwerk-Option überprüfen zeigt es die gesendeten Daten als nur die aus das client_id Feld

+1

Versuchen Sie folgendes: thistabdata $ = {}; –

Antwort

1

Ihre Variablen auf Objekte ändern:

von [] zu {}

In Javascript nur Array mit numerischen Tasten vorhanden ist. Assoziative Arrays existiert nicht in Javascript.

prüfen diese Schnipsel, den Unterschied zu füllen:

//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

Danke! 3 Stunden über 4 Klammern! – McGreeb