一次提交所有数据,而不是通过列表进行迭代

时间:2017-10-04 19:37:52

标签: jquery ajax

我正在使用AJAX将数据提交到将更新我的数据库的脚本。

通常这很简单,但在这种情况下,当我点击提交按钮时,我需要遍历一个选择器列表来收集值。我可以这样做,但似乎将数据收集到一些数组然后只发布一次就更有意义了。

 $(document).on('click', '#submit', function(){

        $('.myForm').each(function() {
            var hid = $(this).closest('.myForm').attr('data-hid'),
                opn = $(this).find('.tOpen'),
                cls = $(this).find('.tClose'),
                old_opn = opn.attr('data-open'),
                new_opn = opn.val()+':00',
                old_cls = cls.attr('data-close'),
                new_cls = cls.val()+':00';

            $.ajax({
                type: 'POST',
                url:  '/myscript.ajax',
                data: {
                    'hid' : bid,
                    'old_opn' : old_opn,
                    'new_opn' : new_opn,
                    'old_cls' : old_cls,
                    'new_cls' : new_cls

                },
                dataType : 'json',
                success: function (response) {
                    // done
                }
            });
        });            
    });

我觉得我很接近,但仍需要一些帮助来解决这个问题。

1 个答案:

答案 0 :(得分:0)

你可以做这样的事情

let allData = [];

$('.myForm').each(function() {
  var tempArray = [];
  tempArray['hid'] = $(this).closest('.myForm').attr('data-hid');
  tempArray['opn'] = opn = $(this).find('.tOpen');
  tempArray['cls'] = $(this).find('.tClose');
  tempArray['old_opn'] = opn.attr('data-open');
  tempArray['new_opn'] = opn.val()+':00';
  tempArray['old_cls'] = cls.attr('data-close');
  tempArray['new_cls'] = cls.val()+':00';

  allData.push(tempArray)
});

然后一次性发送