通过AJAX到Laravel控制器的复选框值数组

时间:2018-08-05 22:02:02

标签: jquery ajax laravel laravel-5

我有一个数据表,其中每一行都有一个带有以下代码的复选框:

<input type="checkbox" class="batchCheckbox" name="batch[]" value="(item id)">

我有一个AJAX脚本,当我按下下载按钮时就会调用该脚本:

<script>
  $(document).ready(function(){
    $('#downloadTableData').click(function(){
      $.ajax({
        url: '/carrier/api/osd/download',
        data: {'batch[]': $('.batchCheckbox:checked').serialize(),
                '_token': $('input[name=_token]').val(),
              },
        type: 'POST',
        dataType: 'json',
        success: function (response) {
            console.log('Data downloaded.');
        }
    });
  });
 });
</script>

现在,这是通过请求发送的内容:

batch[]: batch%5B%5D=83&batch%5B%5D=66
_token: xxxxxxxxxxxxxxxxxxxxxxxGSSMWc

实际上,它应该发送一个用于批处理的值数组:83、66

在我的控制器中,我返回$ request-> batch的dd只是为了验证,这就是返回的内容:

array:1 [
  0 => "batch[]=83&batch[]=66"
]

很明显,我只需要数字,是否有更好的格式化AJAX的方式来更好地请求batch []数据?

谢谢

1 个答案:

答案 0 :(得分:1)

您应该使用serializeArray并获取值

<script>
function getValueCheckbox() {
    $('.batchCheckbox:checked').serializeArray().map(function (obj) {
       return obj.value
    })
}
  $(document).ready(function(){
    $('#downloadTableData').click(function(){
      $.ajax({
        url: '/carrier/api/osd/download',
        data: {
               'batch[]': getValueCheckbox(),
                '_token': $('input[name=_token]').val(),
              },
        type: 'POST',
        dataType: 'json',
        success: function (response) {
            console.log('Data downloaded.');
        }
    });
  });
 });
</script>