【发布时间】:2018-11-20 09:28:40
【问题描述】:
如果我在单击按钮后用复选框选择多个前 3 条记录,我在数据表中有复选框,我会得到类似 id=1&id=2id=3 的 ID,我只想要 ID 号并像这样分隔 1,2,3
function allAreEqual(aarray) {
if (!aarray.length) return false;
return aarray.reduce(function(a, b) {
return (a === b) ? a : (!b);
}) === aarray[0];
}
$(function() {
$('#create_challan').click(function() {
var allVals = [];
var saleid = [];
var buttonp = $(this);
buttonp.addClass('disabled');
buttonp.html(working);
$('input[name=checkboxlist]:checked').each(function() {
allVals.push($(this).val());
saleid.push($(this).attr('saleid'));
});
if (allAreEqual(saleid)) {
$.post('<?php echo base_url(); ?>index.php/' + user_type + '/' + module + '/create_invoice_pdf', {
<?php echo $this->security->get_csrf_token_name(); ?>: '<?php echo $this->security->get_csrf_hash(); ?>',
saleid: saleid[0],
val: allVals
},
function(data, status) {
window.open(base_url + 'invoices/' + data, '_blank');
window.focus();
location.reload();
});
} else {
bootbox.alert("<b><br><br>Selection Error!</b>");
buttonp.removeClass('disabled');
buttonp.html('Create Invoice');
}
});
});
【问题讨论】:
-
你的意思是在这个属性
val: allVals? -
"我得到像这样的 id=1&id=2id=3"...你在哪里看到这个值?如果您正在查看 HTTP 请求正文,那么这是意料之中的 - 这就是您在 HTTP 请求中传输值的方式。尽管它们只会相互覆盖,因此您需要为它们提供单独的名称,或使用
[]。更清楚地了解您在哪里看到此信息会有很大帮助 -
P.S.我注意到在您的 $.post 请求成功后,您正在执行“location.reload()”。由于在这种情况下您将立即刷新页面,那么使用 AJAX 的原因是什么?普通形式的回发会更容易处理,需要更少的代码并且可以产生相同的效果 - 发出请求,然后加载所需的页面。 AJAX 的全部目的是让您停留在同一页面上。在 AJAX 完成后立即重定向用户完全违背了使用它的意义。