ボタンをクリックした後にAJAXを使用してコントローラコードを実行しようとしています。私が集めたことから、これはAJAXを使うべきです...フロントエンドからバックエンドに応答を送信してから、json応答を生成します。Symfony2でAJAXを正しく使用する方法
しかし、私はこれを正しく行う方法を理解できません。私はAJAXにコントローラコードを成功させる方法を確信しています。
成功したらテーブルを表示するだけですが、AJAXのポイントであるので、ボタンがクリックされるまでコントローラコードを実行しないようにしています。
symfonyはこの上のドキュメント持っているように見えません。http://symfony.com/legacy/doc/book/1_0/en/11-Ajax-Integration
をそして、これらのスタックオーバーフローの質問/答えは私の使用のために古すぎるか、私を助けていない:
How to integrate Ajax with Symfony2
How to make a POST Ajax request with Symfony and Jquery
twig:
AJAX:コントローラで
<script type="text/javascript">
$(document).ready(function(){
$(document).on('click', "#begin-check", function(e){
console.log('You have clicked');
e.preventDefault();
$.ajax({
method: 'POST',
url: "{{ path('control_check') }}",
data: { //research what to put here
},
success: function(responseData){
//run the controller code
//Show HTML table
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr.status);
console.log(xhr.responseText);
console.log(thrownError);
},
})
});
});
</script>
:
/**
*
* @Route("/control", name="control_check")
* @Template()
*/
public function controlCheckAction()
{
$request = $this->get('request');
$em = $this->getDoctrine()->getManager();
$persons = array();
//more code
return new JsonResponse(array('persons' => $persons));
}
JavaScriptコードは小枝テンプレートですか? –
これは、上から私の小枝と同じファイルにあります – grgre
あなたのJavaScriptの成功関数内のサーバー側のコントローラコードを実行することはできません。成功が呼び出されると、あなたのresponseDataは、controlCheckActionが生成したJSONを持ちます。次に、テーブルをレンダリングするにはjavascriptが必要です。 Symfonyの複雑な問題なしに、ajaxチュートリアルの素晴らしいイントロを見つけることができるかどうかを確認してください。最初に基本を理解する必要があります。 – Cerad