我有多个要插入我的数据库的复选框。
我有这个代码,我试图通过数组获取所有的复选框值,但是我在数据库中插入的内容是空白的,也许我采取错误的方式
复选框
<label class="checkbox-inline"><input type="checkbox" class="modalday" name="modalday[]" value="M">Monday
</label>
</div>
<div class="checkbox">
<label class="checkbox-inline"><input type="checkbox" class="modalday" name="modalday[]" value="T">Tuesday
</label>
</div>
<div class="checkbox">
<label class="checkbox-inline"><input type="checkbox" class="modalday" name="modalday[]" value="W">Wednesday
</label>
</div>
<div class="checkbox">
<label class="checkbox-inline"><input type="checkbox" class="modalday" name="modalday[]" value="Th">Thursday
</label>
</div>
<div class="checkbox">
<label class="checkbox-inline"><input type="checkbox" class="modalday" name="modalday[]" value="F">Friday
</label>
这是我如何获取数据
function saveData(){
var modsubj = $('#modalsubject').val();
var modsect = $('#modalsection').val();
var modstart = $('#modalstarttime').val();
var modend = $('#modalendtime').val();
var moduser = $('#userID').val();
var modday = new Array();
$('.modalday input:checked').each(function() {
modday.push($(this).attr('name'));
});
$.ajax({
type: "POST",
url: "modal.funcs.php?p=add",
data: "subj="+modsubj+"§="+modsect+"&day="+modday+"&start="+modstart+"&end="+modend+"&user="+moduser
});
}
这是我处理从ajax
获取的数据的地方$page = isset($_GET['p'])?$_GET['p']:'';
if($page=='add'){
$subj = $_POST['subj'];
$sect = $_POST['sect'];
$day = $_POST['day'];
$strTime = $_POST['start'];
$endTime = $_POST['end'];
$user_id = $_POST['user'];
$auth_user->createSchedule($subj,$sect,$day,$strTime,$endTime,$user_id);
$schedRow = $auth_user->readSchedule();
} else if ($page=='edit') {
}
我认为我的错误是如何从阵列中获取数据,但我不确定如何正确地做到这一点,请帮助
答案 0 :(得分:0)
我认为这是你的代码错误的地方:
$('.modalday input:checked').each(function() {
modday.push($(this).attr('name'));
});
您应该获取复选框的值,而不是元素的名称。所以这样做:
$('.modalday input:checked').each(function() {
modday.push($(this).val());
});
甚至只是更改名称&#39;价值&#39;:
$('.modalday input:checked').each(function() {
modday.push($(this).attr('value'));
});
然后,为了将数据发送到PHP帖子, 字符串应如下所示:
modalday[]=T&modalday[]=W&modalday[]=Th
所以要么使用循环来创建字符串,要么只使用$(form).serialize(),如下所示:
以表格形式包装您的复选框:
<form id="checkboxform">
<!-- your check box codes here -->
</form>
你的jquery代码:
var params = $('#checkboxform').serialize();
$.ajax({
type: "POST",
url: "modal.funcs.php?p=add",
data: params,
});
请参阅我的Js Fiddle示例代码:https://jsfiddle.net/0y84tws2/
答案 1 :(得分:0)
我发现了一种更简单的方法,
在我的jquery中,我将之前的代码更改为
var modday = [];
$('.modalday').each(function() {
if($(this).is(":checked")){
modday.push($(this).val());
}
});
modday = modday.toString();
$.ajax({
type: "POST",
url: "modal.funcs.php?p=add",
data: "subj="+modsubj+"§="+modsect+"&day="+modday+"&start="+modstart+"&end="+modend+"&user="+moduser
});
在我的php中,这就是我采用这些值的方式,非常简单
$page = isset($_GET['p'])?$_GET['p']:'';
if($page=='add'){
if(isset($_POST['day'])){
$subj = $_POST['subj'];
$sect = $_POST['sect'];
$day = $_POST['day'];
$strTime = $_POST['start'];
$endTime = $_POST['end'];
$user_id = $_POST['user'];
$auth_user->createSchedule($subj,$sect,$day,$strTime,$endTime,$user_id);
$schedRow = $auth_user->readSchedule();
}