我使用php,js,ajax插入了数据。我从表单获取数据,并将使用ajax作为post方法将其发送到我的控制器。我的控制器将获取我的Ajax请求的所有数据,而我的php代码将处理这些数据以将其插入数据库中
所以这是我在使用ajax发送之前在javascript中获取复选框的多个值的方法。
这是我的示例复选框 HTML
<input id="chk_RegularShiftTable_rest_mon" class = "chk_RegularShiftTable_rest" type="checkbox" name="chk_RegularShiftTable_rest[]" value="1" disabled>
<input id="chk_RegularShiftTable_rest_mon" class = "chk_RegularShiftTable_rest" type="checkbox" name="chk_RegularShiftTable_rest[]" value="2" disabled>
这就是我如何使用for
JavaScript
var chkRest = document.getElementsByName('chk_RegularShiftTable_rest[]');
var dataRest = [];
for (var x = 0; x < chkRest.length; x++){
if (chkRest[x].checked){
dataRest.push(chkRest[x].value);
}
}
这就是我使用Ajax发送数据的方式,它将发送到控制器。
AJAX
$.ajax({
headers:{'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')},
url: "{{ route('save') }}",
method: "POST",
dataType: "json",
data: {
dataRest:dataRest
},
success:function(data)
{
if(data.error.length > 0){
alert(data.error[0]);
}
if(data.success.length > 0){
alert(data.success[0]);
refresh_Table();
}
},
error: function(xhr, ajaxOptions, thrownError){
console.log(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
}
});
现在,当我获得所请求的数据时。控制器将验证用户检查了哪些值。
此代码中的问题是,每当我选中它的复选框时,无论是复选框1的值为1
还是复选框2的值为2
,控制器都会识别出选中了哪些项目。似乎PHP的in_array
不会检查该值是否在由$data_rest
我的控制器(PHP)
public function save(Request $request)
{
$message = "";
$result = array();
$error = array();
$success = array();
$data_rest = array($request->dataRest);
if (in_array('1', $data_rest, true)){
$thu = "Success";
$success[] = $thu;
}
else
{
$thu = "Error";
$error[] = $thu;
}
if (in_array('2', $data_rest, true)){
$thu = "Success";
$success[] = $thu;
}
else
{
$thu = "Error";
$error[] = $thu;
}
$result = array(
'error'=>$error,
'success'=>$success,
);
echo json_encode($result);
}
这是javascript中数组的示例输出
注意:问题出在我的控制器中,我使用的是PHP手册中的代码if(in_array(value,arrayvariable, BOOLEAN))
,它似乎并没有检查其值是否存在。来自ajax的post
数组