javascript - 表单在 php 中提交 ajax 加载后无法保存检查的多个复选框值
问题描述
我有一个简单的表格,它有:从日期,到日期当我点击提交时,我会得到关于 ajax 负载的汽车预订列表。在每一行中都有一个复选框来选择该行,并且在多次选择行后,单击一个通用按钮以在下一页添加账单。现在我的问题是我想选择多行并再次填写从日期到日期然后提交表单以获取其他列表以再次选择其他行以添加账单,现在问题是当我再次提交表单时旧的选定行没有得到保存,以便我可以在账单页面上一起选择所有行。现在下面的片段都正常工作,但我不知道当再次填写表格并完成选择时如何做到这一点。下面的代码只做当前页面的选择。1.这是ajax脚本
<script> $("#button").click(function(){
document.getElementById("loading").style.display = "block";
document.getElementById("overlay").style.opacity = '0.2';
var toDate = $("#datepicker2").val();
var fromDate = $("#datepicker").val();
// var comp = $("#comp").val();
var dataString = 'fromDate='+ fromDate + '&toDate='+ toDate;
$.ajax({
url: 'CloseBookingload.php',
data:dataString,
type: 'POST',
success: function(result){
// console.log(result);
$("#load").show();
$("#resultData").html(result);
document.getElementById("loading").style.display = "none";
document.getElementById("overlay").style.opacity = '1';
}
}); });</script>
这是加载后我的 ajax 页面复选框字段
<input type="checkbox" id="checkselect" name="checkselect[]" value="<?php echo $row['car_booking_id'];?>">
这是获取复选框值的地方
$checkselect=array();
if(!empty($_POST['checkselect']))
{
$checkselect=$_POST['checkselect'];
$nc = count($checkselect);
for($i=0;$i<$nc;$i++)
{
$dids = $checkselect[$i];
}
$ids = join(",",$checkselect);
$booking_car = $db->prepare("SELECT * FROM `car_booking`
left join driver_master on driver_master.driver_id = car_booking.driver_id
left join vendor_master on vendor_master.vendor_id=car_booking.vendor_name
left join company_master on company_master.company = car_booking.company
inner join city_master on city_master.city_id=car_booking.action
WHERE booked_status=1 and car_booking.slip=1 and car_booking.car_booking_id in ($ids) order by str_to_date( booking_date,'%d/%m/%Y') asc ");
$booking_car->execute();
$MyArr=$booking_car->fetchall();
// print_r($MyArr);
// die;
$booking_car2 = $db->prepare("SELECT * FROM `car_booking`
left join driver_master on driver_master.driver_id = car_booking.driver_id
left join vendor_master on vendor_master.vendor_id=car_booking.vendor_name
left join company_master on company_master.company = car_booking.company
inner join city_master on city_master.city_id=car_booking.action WHERE booked_status=1 and car_booking.slip=1 and car_booking.car_booking_id in ($ids) order by str_to_date( booking_date,'%d/%m/%Y') asc ");
$booking_car2->execute();
$r2=$booking_car2->fetch();
}
for($i=0;$i<count($MyArr);$i++){
$NewIDArr[$i][0]=$MyArr[$i]['car_booking_id'];
}
$Mixed = $NewIDArr;
$r = json_encode($Mixed);
$RequestText = urlencode($r);
?>
<input type="hidden" name="RequestText" value="<?php echo $RequestText; ?>">
<input type = "submit" name = "update" value = "Update">
获取和更新实际值的页面
<?php
require_once '../dbconfig.php';
$r = urldecode($_REQUEST['RequestText']);
$Mixed = json_decode($r);
$bill=$_POST['bill'];
$remark=$_POST['remark'];
//$RequestText = $_POST['RequestText'];
$singleArray = [];
foreach ($Mixed as $childArray)
{
foreach ($childArray as $value)
{
$singleArray[] = $value;
}
}
// print_r($singleArray);
// print_r( $bill);
// print_r($remark);
// die;7615, 7631
$nc = count($singleArray);
//print_r($nc);
for($i=0;$i<$nc;$i++)
{
$did = $singleArray[$i];
$data=array('bill_no'=>$bill,'remark'=>$remark);
$where = array('car_booking_id' =>$did);
$update = $db->update('car_booking',$data,$where)-
>affectedRows();
}
header("Location:close_booking.php");
//echo "Updated";
?>
解决方案
现在,当您将在数组中发送选定的行时,从已关闭预订的会话值中检查 id 并进行操作而无需再次点击并继续进行账单页面。在将响应发送回客户端服务器并存储之前,使用已关闭的预订创建会话,如下所示:-
Array
(
[closed_bookings] => Array
(
[123] => Array
(
[name] => abc
[company_name] => abc pvt ltd
[id] => 123
)
[1234] => Array
(
[name] => xyz
[company_name] => abc pvt ltd
[id] => 1234
)
)
)
选定的行值将类似于..
Array
(
[0] => 123,
[1] => 1234
)
现在将 foreach 循环与选定的行一起使用,并使用该键从已关闭的预订中获取值(选定值的值 ex 123)并进行操作。
推荐阅读
- python - 使用 input() 创建一个程序以在 python 中绘制 excel 数据以选择文件
- mysql - MySQL查询返回错误的行数?
- python - 如何将字符串转换为日期格式
- r - 用其他列中匹配类别的同一数据表中的值替换 NA
- active-directory - Active Directory LDAP 上的 baseDN 问题,找不到对象
- android - Android 生物识别 API 未使用人脸识别解锁
- spring - Spring WebSocket 抛出 MessageDeliveryException 原因:java.lang.UnsupportedOperationException:null
- android - 无法识别的运算符 abs
- python - Python 3.8.5 和带有多播的套接字给出 [WinError 10022] 在 Python 3.8.3 正常工作时提供了无效参数
- matlab - Matlab scatterhist在直方图侧添加百分比