0
私はajaxを使用してZF3で非同期連絡先フォームの検証を行います。私ContactControllerザッツ は以下Zend 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()));
}
}
と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があります。
問題は、私が提出したときに、私はこのようにするたびに応え得ること、である:私はexmaple「メッセージオブジェクト」 のために開いたときに(そのコンソールから)
Object
-email :Object
-message :Object
-subject :Object
-personal-data :Object
、それは私を示していますのisEmpty:」メッセージフィールドが空でない場合でもフィールドは必須です!
私が間違っていることを誰にも知ってもらえますか?
console.logの表示内容は何ですか? – madalinivascu
ちょっと私はそれを解決しました。 Iが削除: のcontentType: "アプリケーション/ JSON;のcharset = UTF-8"、 非同期:真、今 とにconsole.log表示: -email:オブジェクト -Personalデータ:オブジェクト -message:オブジェクト -subject:オブジェクト そして私は、例えば、電子メールのために開く:私は を取得するオブジェクト - メール:のisEmpty(「フィールドが必要とされる」)//電子メールの入力が空 -emailです:invalidFormat(「ザッツないメールadres ")blablablaのようなメールを送ろうとしたら それは少なくとも今のところうまくいくようです。 しかし、なぜそれが動作しませんでした "contentType:" application/json; charset = utf-8 "、 async:true、" ? – bielu000
asyncはデフォルトでtrueです。問題はコンテンツタイプなので、phpコードはjson形式のデータを認識しません。データはURLエンコードされたキー値 – madalinivascu