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