【发布时间】:2013-01-31 21:38:41
【问题描述】:
我已经使用 jQuery 构建了一个简单但有效的 AJAX 表单。表单在提交之前使用 jQuery 进行验证,然后在成功提交后再次使用 PHP 进行验证。
唯一的问题是错误处理。当 PHP 检查返回所有字段都正常时,我会显示一条成功消息。如果出现错误,我只会显示“出现错误”。
如何将数据从 PHP 发送回 jQuery,以便将无效字段标记为无效?
或者这种形式的错误处理是不必要的,因为动态高亮需要打开JavaScript,如果打开了JavaScript,表单就不能提交错误?
基本上,我的有效支票是这样的(当然是简化的):
function checkSomething( $something ) {
$valid = true;
if ( strlen( $something ) === 0 ) {
$valid = false;
}
return $valid;
}
在脚本的最后,我这样做:
if ( checkSomething( $something ) && checkThis( $this ) && checkThat( $that ) ) {
echo "success";
} else {
echo "error";
}
在我的 JavaScript/jQuery 代码中,它看起来像这样:
$.ajax({
url: "form.php",
type: "POST",
data: string,
success: function ( result ) {
if ( result == "success" ) {
alert( "success" );
} else {
alert( "error" );
}
}
});
【问题讨论】:
-
您需要从 PHP 中回显更多内容,告诉您失败的原因,然后使用 JS 处理该响应以显示任何适当的消息。发布一些代码并向我们展示您现在是如何设置它的,这样会更容易提供帮助。
-
如果你有 jQuery 验证并且启用了 JS,你的 PHP 验证可能永远不会发挥作用(它只是为了预防起见)。换句话说,如果您的客户端验证正常工作,那么您的服务器端验证将不会有任何消息要发回。如果您的客户端验证被禁用或绕过,那么您的服务器端验证将接管。如果客户端的 JS 被禁用,那么无论如何您都无法通过 jQuery 发回任何消息。也显示代码。
-
他仍然应该返回一个 JSON 响应。如果它被绕过,这并不意味着 Javascript 被禁用。即使是这样,它也应该返回 JSON 响应,如果禁用 Javascript,它将在浏览器中简单地显示为文本。
标签: php jquery ajax forms error-handling