>有人知道如何在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));