我使用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" );
}
}
});
答案 0 :(得分:1)
我认为你应该只有一个PHP服务。您从表单发送数据,如果有任何无效数据,您可能希望返回一个JSON,指示哪些字段是错误的,因此您可以解析并显示它。如果它没问题,你只需显示成功消息。
我不确定我是否会遇到你的问题。
答案 1 :(得分:1)
您的表单提交有3个步骤:JavaScript验证&完整提交,PHP验证/处理和JavaScript('因此无效字段可以标记为无效')
听起来你已经完成了第1步,而且大部分都是第2步。
在PHP代码中,您应该有一些数据结构,最好是一个数组,它保存哪些值无效。您可以通过echo将其返回浏览器
将此数据返回给浏览器<?php
...
...
if( count( $invalidFieldArray ) ){
echo json_encode( array( 'status' => 'Fail',
'data' => $invalidFieldArray ) );
}else{
echo json_encode( 'status' => 'Success' );
}
上面的代码会将成功/失败返回到您的JavaScript表单。
我个人使用jQuery form plugin来处理表单提交,我建议您尝试一下。它具有许多开箱即用的功能。
$.ajax({
url: "form.php",
type: "POST",
data: string,
dataType: json,
success: function ( result ) {
if ( result.status === "Success" ) {
alert( "success" );
} elseif (result.status === 'Fail'){
for (field in result.data) {
/* Invalid field handling */
...
}
}
}
});
提示:稍微偏离主题,但在JavaScript中使用比较时总是使用三等号(===),双等号(==)在JavaScript中与在其他语言中不一样; JavaScript使用double equals键入强制,这会产生不一致的结果。
答案 2 :(得分:0)
你可以从PHP发送数据并将其存储在网址中,例如url.com/#value=1