如何在屏幕上显示带有附加的数据的验证错误消息?
Posted
技术标签:
【中文标题】如何在屏幕上显示带有附加的数据的验证错误消息?【英文标题】:How to show the validation error message of a data on the screen with append? 【发布时间】:2021-05-26 22:10:13 【问题描述】:我正在尝试如下图所示将数据错误插入表单所造成的错误。
但是,它只有在正确输入数据时才有效。例如,它应该显示“无效的 CPF”。
javascript 代码:
$("#formCadastro").on("submit", function (event)
event.preventDefault();
var dados = $(this).serialize();
$.ajax(
url: getRoot() + 'controllers/controllerCadastro',
type: "POST",
dataType: "json",
data: dados,
success: function (xhr)
$(".retornoCad").empty();
$(".retornoCad").append("Dados inseridos com sucesso!");
,
error: function (xhr)
$(".retornoCad").empty();
getCaptcha();
$.each(xhr.response, function(key,value)
$(".retornoCad").append(value + '<br>');
);
);
);
而用于验证的.php文件是:
public function validateFinalCad($arrVar)
if (count($this->getErro()) > 0)
$arrResponse = [
// print_r($this->getErro())
"retorno" => "erro",
"erros" => print_r($this->getErro())
];
else
$arrResponse = [
// print_r($this->getErro())
"retorno" => "success",
"erros" => null
];
/*$this->cadastro->insertCad($arrVar);*/
return json_encode($arrResponse);
【问题讨论】:
error
回调只有在整个 HTTP 请求失败时才会运行(即它返回的状态码不是 200(或相关的,例如 201 等))。它不会因为您返回一些包含您认为指示验证错误的消息的 JSON 而出错。这不是 HTTP 错误。要么让 PHP 在出现验证错误时返回 400 Bad Request 响应,要么在“成功”中编写代码来检查 JSON 的内容并采取相应措施。
我改写成这样:success: function (xhr) $(".retornoCad").empty(); //$(".retornoCad").append("Dados inseridos com sucesso!"); if (xhr == 'erro') getCaptcha(); $.each(xhr.erros, function (key, value) $(".retornoCad").append(value + '<br>'); ); else $('.retornoCad').append('Dados inseridos com sucesso!');
但只有 'Dados inseridos com sucesso!' (成功)出现。
if (xhr == 'erro')
永远不会为真,因为 xhr 是一个对象。它不是一个字符串。请改用if (xhr.retorno == "erro")
来测试对象中的特定值。
P.S.下次当您有一大段代码要向我们展示时,请使用问题下方的“编辑”按钮将其放入主要问题中。如您所见,当它在 cmets 中未格式化时,很难阅读它。谢谢。
而$.each(xhr.erros
不会做太多事情,因为在您的 PHP 中,erros
要么是 null 要么是字符串(因为您使用了 print_r,它应该只是一个调试工具) . "erros" => $this->getErro()
会更好(假设getErro()
返回一个字符串数组)。
【参考方案1】:
只有在整个 HTTP 请求失败时才会运行错误回调(即它返回的状态码不是 200(或相关的,例如 201 等))。它不会因为您返回一些包含您认为指示验证错误的消息的 JSON 而出错。这不是 HTTP 错误。
要么
a) 使 PHP 在出现验证错误时返回 400 Bad Request 响应,或者
b) 在“成功”中编写代码以检查 JSON 的内容并采取相应措施。
例如这将完成选项 (b) 的工作:
success: function (xhr)
$(".retornoCad").empty();
if (xhr.retorno == 'erro')
getCaptcha();
$.each(xhr.erros, function (key, value)
$(".retornoCad").append(value + '<br>');
);
else
$('.retornoCad').append('Dados inseridos com sucesso!');
另外,$.each(xhr.erros
不会做太多事情,因为在您的 PHP 中,erros
要么是 null,要么是字符串(因为您使用了 print_r,它应该只是一个调试工具)。 "erros" => $this->getErro()
会更好(假设getErro()
返回一个字符串数组)。
即
$arrResponse = [
"retorno" => "erro",
"erros" => $this->getErro()
];
【讨论】:
以上是关于如何在屏幕上显示带有附加的数据的验证错误消息?的主要内容,如果未能解决你的问题,请参考以下文章
当活动屏幕首次在 Android Studio 上加载时,如何在隐藏的背景中发送带有当前位置数据的 SMS 文本消息?