我有一个数据表,其中每一行都有一个带有以下代码的复选框:
<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 []数据?
谢谢
答案 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>