2016-04-02 3 views
0

Ich habe diese Code-Anhänge in meinem Javascript, die jedes Mal eine neue Zeile hinzugefügt, wenn Sie auf die Schaltfläche klicken, um einen neuen Mitarbeiter hinzuzufügen.Übergeben von angehängten Werten über JSON-Objekt an JQuery AJAX gesendet werden

Hier ist der Code, der gut funktioniert.

tab_workers.on('click', '.add-workers', function (e){ 
     e.preventDefault(); 

     var iRow = $('tbody tr:last',tab_workers).index() + 1; 
     var nRow = $("<tr>\n" + 
       "<td width='30%'><input name='worker_name_"+ iRow +"' class='form-control' placeholder='Name' /></td>\n" + 
       "<td width='50%'><input name='worker_address_"+ iRow +"' type='text' class='form-control' placeholder='Address'></td>\n" + 
       "<td width='14%'><input name='worker_phone_"+ iRow +"' type='text' maxlength='11' onkeypress='return event.charCode >= 48 && event.charCode <= 57' class='form-control' placeholder='Phone No.'></td>\n" + 
       "<td width='3%'><a class='btn btn-outline btn-circle btn-sm red del-workers pull-right'><i class='fa fa-remove'></i>Remove</a></td>" + 
       "</tr>\n"); 

     $('tbody',tab_workers).append(nRow); 

Dann habe ich diesen Code in die Ajax-Post-Methode gesendet, indem sie es in JavaScript-Objekt zuerst gewickelt wird.

var workers = []; 
    $("[name^=worker_name]",tab_workers).each(function(i, wname){ 
     //var workername = $("[name=worker_name_"+i+"]"); 
     var workeradd = $("[name=worker_address_"+i+"]"); 
     var workerphone = $("[name=worker_phone_"+i+"]"); 

     workers.push({ 
      uwiName: $(wname).val(), 
      uwiAddress: $(workeradd).val(), 
      uwiPhone: $(workerphone).val() 
     }); 
    }); 

    var workerdetails = { 
      umkeiWorkerInfo: workers, 
     }; 

    console.log(workerdetails); 

Die obige console.log gibt null für alle Felder (Name, Adresse, Telefone) zurück.

ist der Ajax-Teil,

$.ajax({ 
    type: "post", 
    url: 'home/umkei/ssuForm/create/workers', 
    data: JSON.stringify(workerdetails), 
    contentType : "application/json", 
    success: function(d){ 
    Metronic.unblockUI(el); 
    showMetronicAlert('success','check',msgSuccess); 
    console.log(d); 
    } 
}); 

Vielen Dank im Voraus.

+0

Ist 'tab_workers' Eltern' table' Element? Wird '.each()' aufgerufen, bevor der Benutzer Text in 'input' Elemente eingibt? – guest271314

+2

Erstellen Sie eine Demo mit echtem HTML, das Probleme repliziert – charlietfl

Antwort

0

ich dieses Problem gelöst, ich FOR-Schleife anstelle von .each()

var workers=[]; 
var w = $("[name^=worker_name]",tab_workers); 
var i; 

for(i=1; i<=w.length;i++){ 
    var workername = $("[name^=worker_name_"+i+"]"); 
    var workeradd = $("[name^=worker_address_"+i+"]"); 
    var workerphone = $("[name^=worker_phone_"+i+"]"); 

workers.push({ 
    uwiName: workername.val(); 
    uwiAddress: workeradd.val(); 
    uwiPhone: workerphone.val(); 
    //some other values 
    }); 
} 
Verwandte Themen