我有跟随PHP while循环,它显示数据作为复选框。该复选框可以是多个或一个。
<?php
$supplier = new Admin;
$supplier->rowQuery("SELECT * FROM supplier");
echo '<form id="formId">';
while ( $data = $supplier->result->fetch_assoc()) {
$sid = (int) $data['sid'];
$supplierName = output($data['supplierName']);
echo '<label class="checkbox-inline">';
echo "<input type='checkbox' name='sid[]' data-sid='$sid' value='$sid' class='supplierClass'> $supplierName";
echo '</label>';
}
echo '<input type="hidden" name="submit" value="supplier" class="clickBtn">';
echo '</form>';
?>
现在,我想在选中至少一个复选框或多个复选框时调用Ajax。所以要做到这一点我跟随Javascrpt:
$('.supplierClass').click(function() {
var sid = $(this).data('sid');
if(this.checked){
// $("input[type=submit]").trigger(".clickBtn");
$('.clickBtn').trigger();
$('#formId').submit(function() {
$.ajax({
url : 'process/get-vehicle.php',
type : 'POST',
dataType : 'html',
data : {
sid : sid,
},
beforeSend : function () {
$('.allVehicle').html('Please wait...');
},
success : function ( result ) {
$('.allVehicle').html(result);
}
});
});
}
});
但它不叫做Ajax :(
总体目标
您可以看到我已将复选框名称设为array
sid []。因为我需要将所有复选框检查数据作为PHP文件中的数组。
那么在选中一个或多个复选框时如何调用Ajax? 请注意:在PHP文件中,我想获取所有复选框或一个复选框值。
我的想法:
我认为应该有一个隐藏的提交按钮。当我点击任何复选框时,它应该按jQuery的隐藏按钮来调用Ajax。
答案 0 :(得分:1)
删除提交事件,使用更改事件,获取所有已检查的sid
$('.supplierClass').change(function() {
if( $('.supplierClass:checked').length){
var sids = [];
$('.supplierClass:checked').each(function(i,v) {//get all the sids of the elements checked
sids.push($(v).val());
});
$.ajax({
url : 'process/get-vehicle.php',
type : 'POST',
dataType : 'html',
data : {
sid : sids,
},
beforeSend : function () {
$('.allVehicle').html('Please wait...');
},
success : function ( result ) {
$('.allVehicle').html(result);
}
});
}
});
答案 1 :(得分:0)
无需提交按钮即可执行ajax请求。我改变了你的代码。希望这个符合你的要求。
$('.supplierClass').change(function () {
var sid = $(this).data('sid');
if ($(this).is(":checked")) {
$.ajax({
url: 'process/get-vehicle.php',
type: 'POST',
dataType: 'html',
data: {
sid: sid,
},
beforeSend: function () {
$('.allVehicle').html('Please wait...');
},
success: function (result) {
$('.allVehicle').html(result);
}
});
}
});
我已经在复选框更改事件上触发了ajax调用,并且仅在其选中时触发了。
答案 2 :(得分:0)
$(document).on("click", '.supplierClass:checked', function() {
var sid = $(this).val() // gets the sid
alert('clicked checkbox => ' + sid); // checking if this code gets called
$.ajax({
url: 'process/get-vehicle.php',
type: 'POST',
dataType: 'html',
data: {
sid: sid,
},
beforeSend: function() {
//Code Goes here
},
success: function(result) {
//code goes here
},
error: function(err) {
//code goes here
}
});
})
body {
background: #20262E;
padding: 20px;
font-family: Helvetica;
}
#banner-message {
background: #fff;
border-radius: 4px;
padding: 20px;
font-size: 25px;
text-align: center;
transition: all 0.2s;
margin: 0 auto;
width: 300px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="banner-message">
<p>Check Box</p>
<input type='checkbox' name='sid[]' data-sid='$sid' value='1' class='supplierClass'>
<br>
<input type='checkbox' name='sid[]' data-sid='$sid' value='2' class='supplierClass'>
<br>
<input type='checkbox' name='sid[]' data-sid='$sid' value='3' class='supplierClass'>
<br>
</div>
此代码仅在选中复选框并且向PHP服务器发送一个复选框值时运行,您不需要隐藏的提交按钮来执行此操作