2011-04-11 100 views
3

目前我正在試圖驗證與阿賈克斯和Zend驗證,同時Zend的形式...Zend的形式AJAX驗證上提交

讓我解釋一下,我的形式在iframe彈出(的fancybox),當提交,我需要顯示一個「謝謝你」的消息,關閉iframe並重定向用戶。如果成功,我打算使用ajax驗證來關閉fancybox iframe。

我跟着幾個教程http://www.zendcasts.com/ajaxify-your-zend_form-validation-with-jquery/2010/04/解釋如何ajax化你的zend表單來顯示錯誤,例如在文本輸入上的onblur事件。

一切工作發現onblur或over事件,但當我指定提交按鈕上的點擊事件時,我的猜測是表單得到處理zend和ajax驗證不起作用...你有任何提示或做你看到明顯的錯誤? 非常感謝.... 的JavaScript:

$(function() 
    { 
    $('#contact').submit(function() 
    { 
     doValidation();     
    }); 

}); 

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

    }); 


    $.post(url,data,function(resp) 
     { 
     //document.write(resp); 

        console.log(resp); 
        alert(resp); 
        //parent.$.fancybox.close(); 



     },"json"); 
} 

zend的動作:

public function validateformAction() 
{ 

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

    $form->isValidPartial($this->_getAllParams()); 
    //print_r($bool); 
    $json = $form->processAjax($this->getRequest()->getPost()); 
    header('Content-type: application/json'); 
    echo Zend_Json::encode($json); 
} 
+0

怎樣的反應你進入你的螢火蟲控制檯? – 2011-04-11 11:13:34

+2

不確定,但不應該阻止提交按鈕的默認行爲? – Marcin 2011-04-11 11:27:42

+0

當我使用另一個事件,如「懸停」時,我得到正確的響應,這是與一個字段爲空時的錯誤或一切正常時爲空的JSON對象。但是,當使用點擊或提交事件,我只是得到一個空的POST http:// ......錯誤 – user698812 2011-04-11 11:59:56

回答

1

你應該返回false或的preventDefault上.submit

(function() { 
    $('#contact').submit(function() { 
     doValidation(); 
     return false; 
    } 
}); 
+0

是的,我發現了一種可能不是最漂亮但似乎工作的方式:$。post(url,data,function(resp){//document.write(resp); console.log(resp) ; alert(resp); // parent。$。fancybox.close(); $('#contact')。submit();},「json」); - user698812 4月11日在13:01 – user698812 2011-04-20 06:33:40