PHP 在 JavaScript 警报框中显示$errors数组



>有人知道如何在javascript警报框中返回错误数组吗?我下面的代码没有正确解决问题。浏览器返回"无法使用 [] 进行读取"。使用不带括号的$error时,浏览器仅在警报框中返回单词"Array",但不显示错误消息。有什么帮助吗?

echo '<script type="text/javascript">alert("Error: '.$errors[].'");</script>';

更新以包括我的代码范围:

  $errors = [];
      $target_dirRFP = ('accounts/' . $order_list . '/rfp/');
      $file_nameRFP = $_FILES['FileToUploadRFP']['name'];
      $file_sizeRFP = $_FILES['FileToUploadRFP']['size'];
      $extentionRFP = pathinfo($file_nameRFP, PATHINFO_EXTENSION);
      $tempRFP = ($_FILES["FileToUploadRFP"]["tmp_name"]);
      $target_fileRFP = ($target_dirRFP . $file_nameRFP);
      $valid_formatsRFP = array("pdf");
      $target_dirPSA = ('accounts/' . $order_list . '/psa/');
      $file_namePSA = $_FILES['FileToUploadPSA']['name'];
      $file_sizePSA = $_FILES['FileToUploadPSA']['size'];
      $extentionPSA = pathinfo($file_namePSA, PATHINFO_EXTENSION);
      $tempPSA = ($_FILES["FileToUploadPSA"]["tmp_name"]);
      $target_filePSA = ($target_dirPSA . $file_namePSA);
      $valid_formatsPSA = array("pdf");
          if(!empty($file_nameRFP)) {
            if(in_array($extentionRFP, $valid_formatsRFP) === false) {
              $errors[] = "The RFP you selected to upload is not allowed. Only PDF file is permitted.";
            }
            if (file_exists($target_fileRFP)) {
              $errors[] = "Attached RFP: "'.$file_nameRFP.'" already exists.nPlease select another file to upload.";
            }
          }
          if(!empty($file_namePSA)) {
            if(in_array($extentionPSA, $valid_formatsPSA) === false ) {
              $errors[]="The PSA you selected to upload is not allowed. Only PDF file is permitted.";
            }
            if (file_exists($target_filePSA)) {
              $errors[] = "Attached PSA: "'.$file_namePSA.'" already exists.nPlease select another file to upload.";
            }
          }
          if(empty($errors)==true) {
            move_uploaded_file($tempRFP, $target_fileRFP);
            move_uploaded_file($tempPSA, $target_filePSA);
            $stmt = $DB_CON_C->prepare("INSERT INTO `".$order_list."`
                    SET first_name = '$first_name', last_name = '$last_name'");
            $stmt->execute();
            echo '<script type="text/javascript">alert("Submitted.");</script>';
          } else {
              echo '<script type="text/javascript">alert("Error: ' . implode("; ", $errors) . '");</script>';
          }

使用implode()并输入新行很可能是最好的方法。

例:

<?php
$errors = [];
if( validateFails() ){
    $errors[] = "some error found";
}
if( failAgain() ){
    $errors[] = "some other error";
}
echo '<script>alert("'.implode("\n", $errors).'");</script>';

更新:

另一个错误在于错误消息字符串语法。看看这一行:

$errors[] = "Attached PSA: "'.$file_namePSA.'" already exists.nPlease select another file to upload.";

这应该重写为:

$errors[] = "Attached PSA: $file_namePSA already exists.\nPlease select another file to upload.";

由于双引号内的任何变量"..."都会正确回显出来。字符串中的新行应该是\n而不是n.

你可以

用 implode(( 将数组转换为字符串

echo '<script type="text/javascript">alert("Error: ' . implode("; ", $errors) . '");</script>';

您必须创建某种字符串表示形式。 例如,您可以使用分隔符"内爆"数组。 像这样:

echo '<script type="text/javascript">alert("Error: ' . implode(', ', $errors) . '");</script>';

这只是所有数组元素之间的简单逗号+空格分隔符。 如果您需要更复杂的东西或更多的样式(在这种情况下,您可能首先不需要alert()(,那么您可以从数组的内容中手动构建任何您喜欢的字符串。 您只需要将字符串输出到页面,而不是直接输出数组。

希望你能得到准确的输出。请尝试

alert(JSON.stringify($errors));

最新更新