0
我嘗試使用ajax在ZF3中進行異步聯繫表單驗證。 這就是我的ContactControllerZend Framework 3 AJAX響應數據
public function contactAction()
{
$form = $this->form;
$request = $this->getRequest();
$response = $this->getResponse();
$vm = new ViewModel(['form' => $this->form]);
$form->setInputFilter(new ContactFormFilter());
if (!$this->getRequest()->isPost())
return new ViewModel(['form' => $this->form]);
$data = $request->getPost();
$form->setData($data);
if (!$form->isValid())
{
$vm->setTerminal(true);
return $response->setContent(\Zend\Json\Json::encode($form->getMessages()));
}
}
及以下contact.phtml用jQuery腳本。
$(function(){
$("#foo").submit(function(event){
event.preventDefault();
$.ajax({
url: '/kontakt',
type: 'POST',
dataType: 'json',
contentType: "application/json; charset=utf-8",
async: true,
data: ($("#foo").serialize()),
success: function (data) {
console.log(data);
alert(data);
},
error: function (data) {
console.log(data);
}
});
})
})
Form has「foo」id;
的問題是,當我提出我得到這樣每次都回答:(其從控制檯)
Object
-email :Object
-message :Object
-subject :Object
-personal-data :Object
,當我打開〔實施例「的消息對象」 它讓我看到:的isEmpty:」字段是必需的「即使消息字段不是空的!
任何人都可以知道我在做什麼錯?
console.log顯示什麼內容? – madalinivascu
嘿,我剛解決它。 予刪除: 的contentType: 「應用程序/ JSON;字符集= UTF-8」, 異步:真, 和現在的console.log顯示: -email:對象 - 個人數據:對象 -message:對象 -subject:對象 當我打開例如電子郵件:對象,我得到 - 電子郵件:的isEmpty(「字段必填」)//當電子郵件輸入爲空 -email:invalidFormat(「那不是一封電子郵件adres「)當我嘗試發送電子郵件像blablabla 所以它似乎有效,至少現在。 但爲什麼它不適用於 「contentType:」application/json; charset = utf-8「, async:true,」 ? – bielu000
async默認爲true,所以你的問題是內容類型,你的php代碼不能識別json格式的數據,它期望數據爲url編碼的關鍵值 – madalinivascu