1

我尝试使用 ajax 在 ZF3 中进行异步联系表单验证。那是我的联系人控制器

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()));
        }

}

下面是带有 jquery 脚本的contact.phtml。

$(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);

            }
        });
    })
})

表单具有“foo” id;

问题是,当我提交时,我每次都会收到这样的回复:(来自控制台)

Object
-email :Object
-message :Object
-subject :Object
-personal-data :Object

当我打开例如“消息对象”时,它会向我显示:isEmpty:“字段是必需的”,即使消息字段不为空!

谁能知道我做错了什么?

4

1 回答 1

1

删除contentType: "application/json; charset=utf-8",以将数据作为 url 编码发送

于 2016-11-09T10:55:16.733 回答