使用PHP进行ajax表单验证

时间:2012-01-15 21:40:56

标签: ajax json

我使用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");

        }

请告诉我如何解决此错误。

2 个答案:

答案 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