Zend framework Zend文件输入表单ajax验证

Zend framework Zend文件输入表单ajax验证,zend-framework,jquery,zend-form,Zend Framework,Jquery,Zend Form,我在使用ajax验证zend表单中的文件输入时遇到了困难,基本上我能够从普通文本输入中获取错误消息,但从来不会从文件输入中获取错误消息,即使硬编码html请求并将其发送到validate函数,可能有问题,但是zend没有验证ajax发送的文件输入,但是使用普通的isvalid(post)方法验证了。我尝试了$.ajax或$post jquery函数,但没有改变任何东西。。。以下是不同的部分: 表格: 观点: jQuery(document).ready(function() {

我在使用ajax验证zend表单中的文件输入时遇到了困难,基本上我能够从普通文本输入中获取错误消息,但从来不会从文件输入中获取错误消息,即使硬编码html请求并将其发送到validate函数,可能有问题,但是zend没有验证ajax发送的文件输入,但是使用普通的isvalid(post)方法验证了。我尝试了$.ajax或$post jquery函数,但没有改变任何东西。。。以下是不同的部分: 表格:

观点:

jQuery(document).ready(function() 
        {

    $('#send').click(function(event)
                    {

                        event.preventDefault();

                        doValidation(); 

                    });

        });

function doValidation()
    {
        var url = '/ceramstar/public/contact/validateform';
        var data = {};
        $("input").each(function(){
                data[$(this).attr('name')] = $(this).val();

        });
        data[$("#mailbody").attr('name')] = $("#mailbody").val();


        $.ajax({
              type: 'POST',
              url: url,
              enctype: 'multipart/form-data',
              data: "mailsubject=&MAX_FILE_SIZE=8388608&mailattcht=2012.srt&sendcopy=1&send=Send&mailbody=",
              success: function(resp){
                   alert(resp);
                },

              dataType: "json"
            });


//      $.post(url,data,function(resp)
//          {
//          
//                      $('#contact').submit();
//                      
//                      if (resp == "[]"){
//                      window.top.location.href='<?php echo $this->baseUrl().'/contact/thankyou';?>';
//                      parent.$.fancybox.close();
//                      
//                      
//                      }
//                      
//                      
//
//          },"json");




    }

非常感谢您阅读它…

您无法使用jQuery/JavaScript从文件输入字段读取,这是由于js安全限制。如果我没记错,从文件输入元素读取的任何内容都将返回一个空字符串

$form->isValidPartial()方法将不执行验证,因为请求参数mailattcht为空

如果这是您的最终意图,那么您也不能通过AJAX执行文件上传

问候

加里

类似于
jQuery(document).ready(function() 
        {

    $('#send').click(function(event)
                    {

                        event.preventDefault();

                        doValidation(); 

                    });

        });

function doValidation()
    {
        var url = '/ceramstar/public/contact/validateform';
        var data = {};
        $("input").each(function(){
                data[$(this).attr('name')] = $(this).val();

        });
        data[$("#mailbody").attr('name')] = $("#mailbody").val();


        $.ajax({
              type: 'POST',
              url: url,
              enctype: 'multipart/form-data',
              data: "mailsubject=&MAX_FILE_SIZE=8388608&mailattcht=2012.srt&sendcopy=1&send=Send&mailbody=",
              success: function(resp){
                   alert(resp);
                },

              dataType: "json"
            });


//      $.post(url,data,function(resp)
//          {
//          
//                      $('#contact').submit();
//                      
//                      if (resp == "[]"){
//                      window.top.location.href='<?php echo $this->baseUrl().'/contact/thankyou';?>';
//                      parent.$.fancybox.close();
//                      
//                      
//                      }
//                      
//                      
//
//          },"json");




    }
public function validateformAction()
    {

        $this->_helper->viewRenderer->setNoRender();
        $this->_helper->layout->disableLayout();
        $form = new Form_ContactForm();

        $form->isValidPartial($this->_getAllParams());
        //$form->isValidPartial($_FILES);

        $json = $form->processAjax($form->getValues());
        header('Content-type: application/json');
        echo Zend_Json::encode($json);
    }