У меня есть вставка данных с использованием php, js, ajax.Я получаю данные из формы и отправлю их на мой контроллер, используя ajax в качестве метода post.Мой контроллер получит все данные, запрошенные из моего ajax, и эти данные, которые обработает мой php-код, чтобы вставить его в базу данных
Так что это мой способ получения нескольких значений флажков в javascript перед отправкой с использованием ajax.
Вот мои примеры флажков 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>
Вот как я управляю 2 флажками, используя 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
, когда контроллер определяет, какие элементы выбраны.Похоже, in_array
PHP не проверяет, находится ли значение в массиве, заданном из ajax, который является $data_rest
My Controller (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);
}
ThisЭто пример вывода массива в javascript
![enter image description here](https://i.stack.imgur.com/tq2cb.png)
Примечание: Проблема в моем контроллере, я использую код изРуководство по PHP if(in_array(value,arrayvariable, BOOLEAN))
, которое, кажется, не выполняет свою работу, чтобы проверить, существует ли значение из массива post
из ajax
Ссылка: https://www.php.net/manual/en/function.in-array.php