通过json对象传递附加值以发送到jquery ajax

时间:2016-04-02 14:08:09

标签: javascript jquery arrays json ajax

我在javascript中附加了这些附加代码,每次单击按钮添加新行时都会添加新行。

这是代码,工作正常。

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);

然后我将此代码发送到ajax post方法,首先将其包装到javascript对象中。

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);

上面的console.log为所有字段(名称,地址,电话)返回null。

这是ajax部分,

$.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);
    }
});

提前谢谢。

1 个答案:

答案 0 :(得分:0)

我解决了这个问题,我使用FOR循环代替.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
    });
}