我使用PHP Zend框架和jQuery ajax使用json数据格式提交和验证表单。 PHP工作得很好,ajax也很棒。唯一的问题是,如果表单有多个无效输入(例如名称和电子邮件都无效),则ajax执行error:function()部分。
这是ajax代码:
.ajax({
type:'POST',
url:'processForm.php',
dataType:'json',
data:str,
success:function(data){
//do something when ajax call is complete
//setup variables
switch (data.internal_code){
case 0:
$('#NameError').html(data.msg0);
break;
case 1:
$('#EmailError').html(data.msg1);
break;
case 2:
$('#TextError').html(data.msg2);
break;
case 3:
$('#contactForm').fadeOut(2000);
$('#successMessage').fadeIn(2000);
$('#successMessage').fadeOut(4000);
break;
}
},
error:function(data){
alert ("ajax did not work");
}
请告诉我如何解决此错误。
答案 0 :(得分:0)
您需要查看error
回调中的内容并确定发生了什么。或者,打开webkit检查程序或firebug,查看从服务器返回的内容。
如果您的请求适用于有效输入或输入1错误,并且您收到2个无效输入的错误回调,我打赌服务器崩溃并返回500.如果不查看服务器的响应,则不可能帮助更多。
答案 1 :(得分:0)
您不能使用switch语句来检查多个表单,因为结果只是一组操作。
执行此操作的常规方法是在服务器上显式编码JSON以提供更有意义的结果:
if(data.internal_code_0){
// do something
error++;
};
if(data.internal_code_1){
// do something else
error++;
};
// then at the end of the field processing
if(error == 0) {
// reset form field states and button states
// no need to submit form again - it has already been done!
};
你在这里看到我使用显式data.internal_code_0
它实际上它包含什么值无关紧要,而不是它是否设置,因此我可以使用{{{}来处理客户端的多个错误1}} S上。
此外,我计算错误的数量,以便在处理结束时我知道所有字段是否已通过集合。
在PHP方面做这个
ìf