【发布时间】:2017-11-10 20:29:04
【问题描述】:
我在下面有多个复选框来添加用户访问权限:
每个模块都有不同的 ID。但是现在我很困惑如何获取复选框值,然后使用 ajax 对其进行更新。
示例:
- 模块位置,我检查创建和编辑。
- 模块部门我只检查查看
(具有相同的组 ID)
我没有了解如何将其传递给 ajax 并根据模块 ID 和组 ID 将其保存到数据库。
源代码:
$.ajax(
{
url: "loadModule.php",
type: "POST",
data:
{
groupName: $("#groupName").val()
},
dataType: "JSON",
success: function (jsonStr)
{
var len = jsonStr.length;
for(var i=0; i<len; i++)
{
var moduleID = jsonStr[i].moduleID;
var moduleName = jsonStr[i].moduleName;
var projectName = jsonStr[i].projectName;
var groupID = jsonStr[i].groupID;
var chkModule = jsonStr[i].chkModule;
var chkEdit = jsonStr[i].chkEdit;
var tr_str = "<tr id='"+jsonStr[i].moduleID+"'>" +
"<td>" + projectName + "</td>" +
"<td>" + moduleName + "</td>" +
"<td align='center'><input type='checkbox' id='"+jsonStr[i].moduleID+"' name='chk[]' class='chk' value='CREATE'/><input type='hidden' id='groupIDInput' value='"+jsonStr[i].groupID+"'/></td>" +
"<td align='center'><input type='checkbox' id='"+jsonStr[i].moduleID+"' name='chk[]' class='chk' value='EDIT'/></td>" +
"<td align='center'><input type='checkbox' id='"+jsonStr[i].moduleID+"' name='chk[]' class='chk' value='VIEW'/></td>" +
"<td align='center'><input type='checkbox' id='"+jsonStr[i].moduleID+"' name='chk[]' class='chk' value='DELETE'/></td>" +
"</tr>";
$('.dataShow2').show();
$("#tData tbody").append(tr_str);
}
}
我想要什么:
- 使用 ajax 获取复选框值
- 将其传递给 PHP 以保存到数据库。
JS btnUpdate
$('#btnUpdate').on('click', function()
{
var val = [];
$(':checkbox:checked').each(function(i){
val[i] = $(this).val();
});
var chkCreateInputValue = [];
$('input[name^=chkProjectInput]').each(function(){
chkCreateInputValue.push($(this).val());
});
$.ajax(
{
url: "updateGroupAccess.php",
type: "POST",
data:
{
chk: val,
groupIDInput: $("#groupIDInput").val(),
chkCreateInputValue: chkCreateInputValue
},
dataType: "JSON",
success: function (jsonStr)
{
$("#btnUpdate").attr({disabled: true, value: "Update"}).addClass('btn_inact').removeClass('btn_act');;
}
});
});
和 PHP
if(!empty($_POST['chk']))
{
foreach($_POST['chkCreateInputValue'] as $chkCreateInputValue)
{
if(!in_array($chkCreateInputValue, $_POST['chk'])){
$del = oci_parse($c1, "DELETE FROM WA_GA_TBL_ACCESSMODULES WHERE MODULEID_FK = '$chkCreateInputValue' AND GROUPID_FK = '$groupIDInput'");
oci_execute($del);
}
}
foreach($_POST['chk'] as $chk)
{
$qChk = oci_parse($c1, "SELECT * FROM WA_GA_TBL_ACCESSMODULES WHERE GROUPID_FK = '$groupIDInput' AND MODULEID_FK IN ('$chk')");
oci_execute($qChk);
if(oci_fetch($qChk) > 0)
{
$sql = oci_parse($c1, "UPDATE WA_GA_TBL_ACCESSMODULES SET CHKCREATE = 'Y' WHERE GROUPID_FK = '$groupIDInput' AND MODULEID_FK IN ('$chk')");
oci_execute($sql);
}
else
{
$date_added = date("d-M-Y H:i:s");
$sql = oci_parse($c1, "INSERT INTO WA_GA_TBL_ACCESSMODULES(MODULEID_FK, GROUPID_FK, DATEADDED, ADDEDBY) VALUES('$chk', '$groupIDInput', TO_DATE('$date_added', 'dd-MON-yyyy hh24:mi:ss'), '$getUserID')");
oci_execute($sql);
}
}
}
else
{
foreach($_POST['chkCreateInputValue'] as $chkCreateInputValue)
{
if(!in_array($chkCreateInputValue, $_POST['chk'])){
$del = oci_parse($c1, "DELETE FROM WA_GA_TBL_ACCESSMODULES WHERE GROUPID_FK = '$groupIDInput'");
oci_execute($del);
}
}
}
【问题讨论】:
-
这个问题描述看起来很完整......除了你试过的东西不见了。