Проверьте, существует ли значение внутри массива с помощью PHP (in_array) - PullRequest
0 голосов
/ 17 мая 2019

У меня есть вставка данных с использованием 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

Примечание: Проблема в моем контроллере, я использую код изРуководство по PHP if(in_array(value,arrayvariable, BOOLEAN)), которое, кажется, не выполняет свою работу, чтобы проверить, существует ли значение из массива post из ajax

Ссылка: https://www.php.net/manual/en/function.in-array.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...