我有一张表格。如果出现问题,则会显示错误消息。目前它只显示一条错误消息,即使我将错误消息推送到PHP中的数组和json编码数组。
我基本上想做的是:
$errors = []; // Array creation
if (strlen($username) < 5) {
// Add this error to our list
$errors[] = 'Username not valid.';
}
if ($password != $passwordRetype) {
// Add this error to our list
$errors[] = 'Password does not match our records.';
}
// Repeat this process for other errors
// Then handle your list of errors
foreach ($errors as $error) {
echo "Error Found: $error<br>";
}
但仅限于ajax
和php
。
目前我有这个(很多代码,所以跳过一些部分):
$.ajax({
url: $form.attr('action'),
data: formData,
cache: false,
contentType: false,
processData: false,
type: 'POST',
success: function(data) {
console.log(data);
if (data.status == 'success') {
console.log("success");
} else if (data.status == 'not_image') {
console.log("this is not an image");
} else if (data.status == 'image_exists') {
console.log("this image exists");
}
});
});
这是PHP
$errors_query = array();
if (!empty($images)) {
$uploadOk = 0;
$errors++;
$errors_query["status"] = 'image_exists';
}elseif(!in_array($file_type, $allowed)){
$uploadOk = 0;
$errors++;
$errors_query["status"] = 'not_image';
}else{
$uploadOk = 1;
$errors_query["status"] = 'success';
}
if($errors > 0){
echo json_encode($errors_query);
exit();
}else{
echo json_encode($errors_query);
exit();
}
它工作并且只显示一条响应消息,即使这两种数据状态都是&#34; image_exists&#34;和&#34; not_image&#34;存在。如何显示用户的所有错误消息?
答案 0 :(得分:1)
实际上你的ajax jquery代码有一些问题,你包含了额外的&#34; ); &#34;在成功功能部分的结束。
$.ajax({
url: $form.attr('action'),
data: formData,
cache: false,
contentType: false,
processData: false,
type: 'POST',
success: function(data) {
console.log(data);
if (data.status == 'success') {
console.log("success");
} else if (data.status == 'not_image') {
console.log("this is not an image");
} else if (data.status == 'image_exists') {
console.log("this image exists");
}
});
});
如果您在浏览器控制台中查看结果,则可以看到提到的JavaScript错误。
$.ajax({
url: $form.attr('action'),
data: formData,
cache: false,
contentType: false,
processData: false,
type: 'POST',
dataType :"json",
success: function(data) {
console.log(data.status);
var ajaxResult = data.status;
if (ajaxResult.indexOf("success") != -1) {
console.log("success");
}
if (ajaxResult.indexOf("not_image") != -1 ) {
console.log("this is not an image");
}
if (ajaxResult.indexOf("image_exists") != -1) {
console.log("this image exists");
}
}
});
PHP代码如下。
<?php
header("Content-Type:text/json; charset=UTF-8");
$errors_query = array();
$flag1 =0 ;
$allowed = array("png","jpg","jpeg"); // Give the correct values based on your requirement
$images=""; // Assign the correct value based on your program
$file_type= ""; // Assign the correct value
$errors=0;
if (!empty($images)) {
$uploadOk = 0;
$errors++;
$errors_query["status"][] = 'image_exists';
$flag1 =1;
}
if (!in_array($file_type, $allowed)) {
$uploadOk = 0;
$errors++;
$errors_query["status"][] = 'not_image';
$flag1 =1;
}
if($flag1 == 0 ) {
$uploadOk = 1;
$errors_query["status"][] = 'success';
}
if ($errors > 0) {
echo json_encode($errors_query);
exit();
} else {
echo json_encode($errors_query);
exit();
}
?>
答案 1 :(得分:0)
非常简单
就这样做
PHP代码
$errors_query = array();
if (!empty($images)) {
$errors_query['msg'][] = 'Sorry Image not exists';
$errors_query['status'] = FALSE;
} elseif (!in_array($file_type, $allowed)) {
$errors_query['msg'][] = 'not_image';
$errors_query['msg'][] = 'msg2';
$errors_query['msg'][] = 'msg3';
$errors_query['status'] = FALSE;
} else {
$errors_query['msg'][] = 'success';
$errors_query['status'] = TRUE;
}
echo json_encode($errors_query);
jQuery代码
$.ajax({
url: 'http://localhost/welcome/raja',
cache: false,
contentType: false,
processData: false,
type: 'GET',
success: function(data) {
var data = JSON.parse(data);
if (data.status === true) {
console.log("success");
} else {
$.each(data.msg, function( index, value ) {
console.log( index + ": " + value );
});
}
},
});
这是我已经测试的工作示例。快乐工作............ :)
答案 2 :(得分:0)
我粗略理解(如果我错了,请纠正我)
我发现您的代码存在一些问题:
要纠正,您可以执行以下操作:
不幸的是,我现在使用的计算机上没有生产软件,因此我无法为您复制编写正常工作的代码,但希望这可以让您接近方向。