Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/472.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “传送”;[……”是;字符串到php驱动的后端_Javascript_Php - Fatal编程技术网

Javascript “传送”;[……”是;字符串到php驱动的后端

Javascript “传送”;[……”是;字符串到php驱动的后端,javascript,php,Javascript,Php,因此,有一个函数调用后端,它获取特定时间段内的所有预订并将它们返回到前端。如果在相应的时间范围内没有保留,后端将返回字符串“[]”。然后,该数据再次传输到后端,在那里我评估是否存在保留。 为此,我想在后端使用php函数“empty()。 那里的代码基本上是这样的 $allReservationsOrRequestsByUser = json_decode($allReservationsOrRequestsByUser); if(empty($allReservationsOrRequestsB

因此,有一个函数调用后端,它获取特定时间段内的所有预订并将它们返回到前端。如果在相应的时间范围内没有保留,后端将返回字符串“[]”。然后,该数据再次传输到后端,在那里我评估是否存在保留。 为此,我想在后端使用php函数“empty()。 那里的代码基本上是这样的

$allReservationsOrRequestsByUser = json_decode($allReservationsOrRequestsByUser);
if(empty($allReservationsOrRequestsByUser)){
  $overlapExists = false;
}else{
  $overlapExists = 
checkForOverlapWithExistingRequestsOrReservations($todayDate, 
$allReservationsOrRequestsByUser);
}

echo $overlapExists;
现在,在if条件之前,我尝试了上面的代码,包括解码和不解码。在这两种情况下,“empty()”函数始终返回false,而当数组实际为空时,则不应返回false。
我做错了什么

您正在尝试检查“[]”是否为空。所以它不是空的字符串。。。在使用空()进行检查之前,可以将其转换为正确的数组,如

那就回来了,

bool(false) <- Without Json decode
bool(true)  <- With Json decode

bool(false)您需要检查数组或对象中的数组数据
e、 如果获取的数组包含

     if(empty($allReservationsOrRequestsByUser[0]['name'])){
         $overlapExists = false;
      }else{
       $overlapExists = checkForOverlapWithExistingRequestsOrReservations($todayDate, 
      $allReservationsOrRequestsByUser);
      }
如果对象,则使用此名称,并且名称是数据库表的列名

      if(empty($allReservationsOrRequestsByUser[0]->name)){
        $overlapExists = false;
     }else{
       $overlapExists = checkForOverlapWithExistingRequestsOrReservations($todayDate, 
        $allReservationsOrRequestsByUser);
      }

     echo $overlapExists;

但是我在检查之前已经解码了?请看我上面的代码:$AllReservationSorRequestsByser=json_decode($AllReservationSorRequestsByser);“在这之后,$AllReservationSorRequestsByser应该包含数组,不是吗?是的,应该,如果你使用var_dump($AllReservationSorRequestsByser)会发生什么?我没有使用var_dump进行调试,相反,我将结果回显到前端,然后在那里执行console.log。但是,如果我只是回显$AllReservationSorRequestsByser,然后用console.log输出它,那么我会得到未更改的“[]”字符串。@JSONBUG123执行
var\u转储
。直接调试,而不是通过三层删除。好的,谢谢你的提示。我的问题是,在分别调用后端之前,我在前端执行了不必要的“JSON.stringify”。通过这个字符串,字符串看起来像是“[]”,所以它确实包含了两个引号^^^^这就是为什么整个过程无法工作的原因,谢谢!这里不需要使用
,只需
!allReservationsOrRequestsByUser
也会这样做,而不会不必要地抑制错误报告。在
json\U解码后执行
var\u转储($AllReservationSorRequestsByser)
,并向我们展示您得到了什么…?
      if(empty($allReservationsOrRequestsByUser[0]->name)){
        $overlapExists = false;
     }else{
       $overlapExists = checkForOverlapWithExistingRequestsOrReservations($todayDate, 
        $allReservationsOrRequestsByUser);
      }

     echo $overlapExists;