私のsymfonyプロジェクトにいくつかのマップパラメータを保存する必要があります。これを行うには、いくつかの情報をコントローラに渡すことができる私のビューにAjaxを実装する必要があります。symfonyとJqueryでPOST Ajaxリクエストを作成する方法
私はドキュメントを読んで、いくつかのコードを書こうとしましたが、動作させることはできません。そして、Ajaxは本当にデバッグするのに苦労しています。ここで は、コントローラの一部です:
/**
* @Route("/ajax", name="_recherche_ajax")
*/
public function ajaxAction()
{
$isAjax = $this->get('Request')->isXMLHttpRequest();
if ($isAjax) {
return new Response('This is ajax response');
}
return new Response('This is not ajax!', 400);
}
そして、JS:
map.on('zoomend', function(e) {
// use callback e variable
console.log('zoom: ' + e.target.getZoom());
$.ajax({
type: "POST",
url: "/recherche/ajax",
data: {
zoom: e.target.getZoom()
},
dataType: "json",
success: function(response) {
console.log(response);
}
});
});
私はそれは予想通り「これはアヤックスではありません」が存在し、返さないURL recherche/ajax
をご確認ください。しかし、console.logは値を返しません...
これは正しい方法ですか?
編集: コントローラがPOSTリクエストを処理できないようです。私はに注釈を変更しようとしました:
/**
* @Route("/ajax", name="_recherche_ajax")
* @Method({"GET", "POST"})
*/
しかし、それが返されます。
([Semantical Error] The annotation "@Method" in method MySite\SiteBundle\Controller\RechercheController::ajaxAction() was never imported. Did you maybe forget to add a "use" statement for this annotation?)
応答が出力されていませんか、まったく出力されません。 – Touki
私は私のコンソールに何も持っていません... – Xavier
これは、PHPで 'FATAL'エラーが原因と考えられます。ブラウザにajaxリクエストアドレスを直接入力してみてください(私はそれが 'POST'ではないことを知っています)、symfonyエラーがあるかどうかを確認してください... –