我有多个要插入数据库的复选框。
我有一段代码,其中im试图通过数组获取所有的复选框值,但是im在数据库中插入的内容是空的,可能是im错误地使用了数组。
复选框
<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') {
}我认为问题出在我如何从数组中获取数据,但我不确定如何正确操作,请帮助我。
发布于 2017-02-06 22:07:23
我认为这就是你的代码错误的地方:
$('.modalday input:checked').each(function() {
modday.push($(this).attr('name'));
});您应该获取复选框的值,而不是元素的名称。所以要这样做:
$('.modalday input:checked').each(function() {
modday.push($(this).val());
});或者甚至将“name”更改为“value”:
$('.modalday input:checked').each(function() {
modday.push($(this).attr('value'));
});然后,为了将数据发送到PHP post,字符串应如下所示:
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小提琴示例代码:https://jsfiddle.net/0y84tws2/
发布于 2017-02-06 23:52:58
我找到了一种更简单的方法,
在我的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();
}https://stackoverflow.com/questions/42069664
复制相似问题