使用PHP检查in数组中是否存在Value(in_array)

时间:2019-05-17 10:38:21

标签: javascript php ajax

我使用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

管理2个复选框的方法

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

的ajax给出的数组中

我的控制器(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中数组的示例输出

enter image description here

注意:问题出在我的控制器中,我使用的是PHP手册中的代码if(in_array(value,arrayvariable, BOOLEAN)),它似乎并没有检查其值是否存在。来自ajax的post数组

参考: https://www.php.net/manual/en/function.in-array.php

0 个答案:

没有答案